您的位置:首页 > 数据库 > MySQL

mysql 查询字符串大小写不敏感

2014-12-12 20:29 239 查看


MYSQL 查询字符串大小写不敏感

今天在测试修改用户名的时候,在修改用户名为
nbnb
后,发现前端展现的时候却是:
NBNB
。于是就排查了下数据库,发现数据库的记录也是
NBNB
. 接着,就使用了
nbnb
来作为查询条件查询数据,依然能够查询到结果。郁闷了。。。


错误原因:

MySQL 在查询字符串时是大小写不敏感的,在编译MySQL 时一般以ISO-8859 字符集作为默认的字符集,
这个字符集对大小写不敏感
,因此在比较过程中中文编码字符大小写转换造成了这种现象。


解决方案:


方案一:


解决方法是对于包含中文的字段加上
binary
属性,使之作为二进制比较,例如将
username char(30)
修改成
username
char(30) binary


方案二:


在使用源码编译MySQL时,可以在编译的时候使用
--with-charset=gbk
参数,这样MySQL 就会直接支持中文查找和排序了。

方案三:


可以使用MySQL 的locate 函数来判断。以上述问题为例,使用方法为:
SELECT * FROM user_info WHERE locate('username', '赵冲') > 0;


方案四:


把SELECT 语句修改成:
SELECT * FROM user_info WHERE username LIKE BINARY '%FIND%'


方案五:


如果你在Windows下使用已经编译好的MySQL,可以修改My.ini中的字符集选项。

default-character-set = gb2312
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: