MySql如果按有汉字的字段排序,结果是错误的。
原因:MySql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中汉字编码字符大小写转换造成了这种现象。
在网上查询有两个解决办法:
1、对于包含中文的字段加上"binary"属性,使之作为二进制比较。
CREATE TABLE testtable (
Id int(11) NOT NULL auto_increment,
Name varchar(60) binary default NULL,
PRIMARY KEY (Id)
) TYPE=MyISAM;
2、在编译MySql源代码的时使用--with--charset=gbk参数,这样MySQL就会直接支持中文查找和排序了。--with--charset=gbk比--with--charset=gb2312好。默认的是latin1,编译时用extra-charsets=gb2312,gbk,其中,用来加入多个字符集。
第一种方法在MySql 4.0下测试成功。