mysql模糊查询不会区分大小写_MySQL模糊查询(like)时区分大小写

17c2200d2bccc6bde80c919872a3a332.png

问题说明:通过上面的语句,你会发现MySQL的like查询是不区分大小写的,因为我的失误,把Joe写成了joe才发现了这个东东吧。但是,有时候,我们需要区分大小写的是,该怎么办呢?解决方法如下:

方法一(查询时,指定区分大小写)

很简单,在like的后面加个binary就可以了,适用于表的结构不易改变的情况下。大多数人发现这个问题的时候,往往表的结构是不能改变的,所以,这种方法还是很好的。

ef9e10189d79370bd5fd933f8c0fb1f6.png

989dd217ca98b8a56a7e9c2bc66035ba.png

接下来还有其他的方法,是在建表的时候,设置好区分大小的。

也可以在建表时,加以标识

create  table  table_name(

a varchar (20) binary

)

深入了解:

首先,你要了解的是:在MySQL中,对于Column Collate其约定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的

*_cs: case sensitive collation,区分大小写

*_ci: case insensitive collation,不区分大小写

66127fd4725839abf531e8fcea04f58d.png

建表的过程中设置字符区分大小写,然后插入3条记录测试。

0a8c1f57829096d667d2b1aada13f933.png

e62c396e7bcd2083dc2a0077ede7f52a.png

很多时候,我们的首次建表都是不全面的,我在想,能不能以后添加,修改表的特征,这个是可以的。

就刚才那个student_web表吧。

8d7173f3772f84285bf3d635fe13a826.png

cef1e97716cd23ea46b5046b3c2fdd59.png

但是,失败了。我不知道为什么,希望您可以给我帮助。

e461d4bfab2dfabafe30702716f71f0c.png

上面使用_bin来区分大小写的,还可以使用

create table table_name (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;

或者,在查询时指定collation

建表时:mysql> create table table_name (word VARCHAR(10)) CHARACTER SET latin1;

查询时:mysql> SELECT * FROM table_name WHERE word COLLATE latin1_bin LIKE 'F%';  放在like前面

或:mysql> SELECT * FROM table_name WHERE word LIKE 'F%' COLLATE latin1_bin; 放在最后

或:mysql> SELECT * FROM case_test WHERE word LIKE 'F%' COLLATE latin1_general_cs;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值