MySQL中字符串比较大小详解(日期字符串比较问题)

 更新时间:2022年08月31日 11:12:37   作者:yan_pan  
varchar类型的数据是不能直接比较大小的,下面这篇文章主要给大家介绍了关于MySQL中字符串比较大小的相关资料,详细介绍了日期字符串比较问题,需要的朋友可以参考下

前言

数据库中在对于数字与非数字混合的字符串,在进行大小比较的时候,如果两字符串长度相等,那么两字符串就会比较相同位置的字符,比较时若字符是数字,则直接比较,若字符是非数字那么会转换为ascii码进行比较,若在某位置上已经有大小之分,那么就不会再进行比较。

如上所述,当字符串用于比较时间格式数据进行时间维度的比较时会出现问题。如以下sql进行查询时

 select *  FROM  work_day_content as wdc WHERE wdc.work_day >= '2019-09-30 00:00:00' AND   wdc.work_day<= '2019-10-06 00:00:00'  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FdmqBpj3-1641372898325)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220105163155854.png)]

图1-1

如图1-1所示,没有查询出任何条件

当使用日期函数把字符串转化为日期时

select * FROM work_day_content as wdc where date(wdc.work_day) >= date('2019-09-30 00:00:00' ) AND date(wdc.work_day)<= date('2019-09-30 00:00:00' ) 

图1-2

如图1-2所示,查出了符合条件的数据

分析为何第一个sql语句没有查询出内容。由于该字段使用的是字符串形式存储,因此此时比较大小采用的是字符串方式比较大小。

字符串方式比较大小是从左往右进行匹配。对于长度不同的字符串进行匹配时。较短字符串比较完后还没有大小之分。则较长的字符串较大。如下面sql所示

select '2019-09-30 ' < '2019-09-30 00:00:00'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ls9jHyI4-1641372840373)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220105164214829.png)]

发现此时**字符串’2019-09-30 00:00:00’**较大。因此之前的sql没有查出日期为2019-09-30的数据

因此。在使用字符串表示时间时,需要使用时间函数进行比较。

sql提供的时间函数有:date(), str_to_date()

另外,在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前面没有数字,那么就只能截取的数值为0,那么进行加减的时候结果都是0,进行乘除的时候结果都是NULL。

总结

到此这篇关于MySQL中字符串比较大小的文章就介绍到这了,更多相关MySQL字符串比较大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • windows下安装、卸载mysql服务的方法(mysql 5.6 zip解压版安装教程)

    windows下安装、卸载mysql服务的方法(mysql 5.6 zip解压版安装教程)

    这篇文章主要介绍了windows下安装、卸载mysql服务的方法(zip解压版安装),需要的朋友可以参考下
    2016-06-06
  • mysql中异常错误ERROR:2002的解决方法

    mysql中异常错误ERROR:2002的解决方法

    最近在启动mysql的时候发现mysql报错了,错误代码是2002,通过查找相关的资料发现是var/lib/mysql 的访问权限问题,所以这篇文章主要介绍了mysql中异常错误ERROR:2002的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • mysql中的json处理方案

    mysql中的json处理方案

    这篇文章主要介绍了mysql中的json处理方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • mysql 5.0.45 (修改)拒绝服务漏洞

    mysql 5.0.45 (修改)拒绝服务漏洞

    mysql 5.0.45 (修改)拒绝服务漏洞的方法,追求安全的朋友可以参考下。
    2010-07-07
  • mysql中GROUP_CONCAT的使用方法实例分析

    mysql中GROUP_CONCAT的使用方法实例分析

    这篇文章主要介绍了mysql中GROUP_CONCAT的使用方法,结合实例形式分析了MySQL中GROUP_CONCAT合并查询结果的相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • MySQL判断空值的三种方法

    MySQL判断空值的三种方法

    在创建表时,可以指定的列是否可以不包含值,如果在一个列不包含值,则其称其为空值NULL,NULL一个特殊值,代表缺失的值或者不适用的情况,表示未知数据,本文给大家介绍了MySQL判断空值的三种方法,需要的朋友可以参考下
    2024-03-03
  • Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态

    Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态

    这篇文章主要介绍了Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态,需要的朋友可以参考下
    2014-08-08
  • MySQL case when使用方法实例解析

    MySQL case when使用方法实例解析

    这篇文章主要介绍了MySQL case when使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • MySQL数据库 Load Data 多种用法

    MySQL数据库 Load Data 多种用法

    这篇文章主要介绍MySQL数据库中 Load Data 数据的几种种用法,需要的朋友可以参考下面文章的解说
    2021-08-08
  • Mysql中创建高性能索引详解

    Mysql中创建高性能索引详解

    这篇文章主要介绍了Mysql中创建高性能索引详解,索引相信大家都听说过,但是真正会用的又有几人,平时工作中写SQL真的会考虑到这条SQL如何能够用上索引,如何能够提升执行效率,文本就来详细解读如何创建高性能索引,需要的朋友可以参考下
    2023-07-07

最新评论