mysql查询时间区间的数据
前言最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用得挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等。查...
2024.11.15当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感。
解决方案一:
于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。
通过查询资料发现需要设置collate(校对) 。 collate规则:
*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写
解决方法。
1.可以将查询条件用binary()括起来。 比如:
select * from TableA where binary columnA =‘aaa‘;
2. 可以修改该字段的collation 为 binary
比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
解决方案二:
mysql查询默认是不区分大小写的 如:
select * from some_table where str=‘abc‘;
select * from some_table where str=‘ABC‘;
得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做:
第一种方法:
要让mysql查询区分大小写,可以:
select * from some_table where binary str=‘abc‘
select * from some_table where binary str=‘ABC‘
第二方法:
在建表时时候加以标识
create table some_table(
str char(20) binary
)
原理:
对于char、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。BINARY属性是指定列字符集的二元 校对规则的简写。排序和比较基于数值字符值。因此也就自然区分了大小写。
前言最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用得挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等。查...
2024.11.15涉及空值的查询空值(NULL)在数据库中表示不确定的值,例如,赛事比赛前,既然还没开始比赛,运动员这些赛事记录中,运动员的所有的得分值就为空值。然而判断某个字段的值是否为NULL值,不能使用普通的比较...
2024.11.15一、需求描述在业务开发的查询mysql数据库过程中,常常需要查询类似于今天、明天、昨天的数据,或者对日期进行加减计算,比如对某个日期加上几天、几个小时等操作的。在此情况下,我们可以使用date_add...
2024.11.15需求:在使用mysql执行左联结查询时结果集中有一些字段的值为null,程序没处理空值就会产生异常, 需要在查询时将这部分null值替换为0。方法:使用 coalesce函数,它的作用是返回参数中第一...
2024.11.14作者:高鹏文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。这个问题是最近一个朋友问我的。刚好就好好看了一下,留下这样的记录。本文...
2024.11.12