mysql 精准匹配时;字符串字段不区分大小写解决办法

mysql 精准匹配时;字符串字段不区分大小写解决办法

周赒
2022-02-21 / 0 评论 / 125 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年02月25日,已超过1000天没有更新,若内容或图片失效,请留言反馈。

问题:

  在使用字符串字段时作为查询条件 进行精准匹配,发现字符串不区分大小写。
  如下 sql

  # 结果1 
SELECT id,`code` FROM `yh_exchange_code` where code = 'tfUHfk' ; 
# 结果2 
SELECT id,`code` FROM `yh_exchange_code` where code = 'TFUHFK' ; 

  会发现两个查询语句 得到结果都是一条数据
图片2
图片1

原因:

  原因是Mysql中“COLLATE”属性区分大小写,而该属性默认值为“utf8_general_ci”,这个值表示是不区分大小写的。现将解决方法记录如下:

解决办法:

  1.设置“COLLATE”属性值为“utf8_bin”或者“utf8_gerneral_cs”,utf8_bin表示二进制比较,同时也支持区分大小写;在Mysql5.6.10版本中,不支持utf8_genral_cs;
  2.在创建表的时候,指定表字段COLLATE 为utf8_bin或者utf8_general_cs(注意版本),如:

  alter table `yh_exchange_code` modify column code varchar(128) COLLATE utf8_bin ;

  3.修改字段为BINARY:

 alter table `yh_exchange_code` modify column code varchar(128) BINARY;

  4.查询语句字段前面加BINARY:
  两种写法都可以

1、第一种
     SELECT id,`code` FROM `yh_exchange_code` where BINARY code = 'TFUHFK' ; 
2、第二种
SELECT id,`code` FROM `yh_exchange_code` where code = BINARY  'tfUHfk' ; 

结果

图21
图22

0

评论 (0)

取消