西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > 其他 >

MySQL查询字符串时区分大小写

时间:2012-04-10 05:16来源:未知 作者:好模板 点击:
MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,这个字符集对大小写不敏感,因此在比较过程中中文编码字符大小写转换造成了这种现象。

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

方法一: 

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

方法二: 

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

方法三: 

  可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为: 
SELECT * FROM table WHERE locate(field,'李') > 0; 

方法四: 
把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可! 

方法五: 
如果你在Windows下使用已经编译好的MySQL,可以修改My.ini中的字符集选项。 
default-character-set = gb2312 

在默认情况下,mysql搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列。 

如果打算使搜索区分大小写,请确保操作数之一具有区分大小写的或二进制校对。例如,如果你正在比较均适用latin1字符集的列和字符串,可使用COLLATE操作符,使1个操作数具有latin1_general_cs或latin1_bin校对特性。例如: 

col_name COLLATE latin1_general_cs LIKE 'a%' 
col_name LIKE 'a%' COLLATE latin1_general_cs 
col_name COLLATE latin1_bin LIKE 'a%' 
col_name LIKE 'a%' COLLATE latin1_bin 

如果希望总是以区分大小写的方式处理列,可使用区分大小写的或二进制校对声明它。建表时候使用BINARY标示。 
CREATE TABLE T( 
    A VARCHAR(10) BINARY 
); 



如果是自己的服务器使用win系统,方法五是最好的方法!如果是linux系统,可以使用方法二!如果不是自己的机子,可以使用方法一,这样你的用户名是严格区分大小写的!

(责任编辑:好模板)
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容