在mysql中使用默认字符集为utf8,结果想要把中文按拼音排序出现了问题,排出来的顺序乱七八糟,不是我们想要的结果。
解决办法如下:
1、不想改变表定义及默认编码的情况,将字段先转换成gbk编码再排序:
SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
chinese_field 为要进行排序的中文字段名称
前提是在安装mysql时安装了gbk字符集,不然会报错:
#1115 - Unknown character set: 'gbk'
在编译源码时加上gbk编码即可,如果已经安装好了,重新编译再安装,重新编译安装一般不会影响mysql的已有设置,包括数据都不会受到影响。
2、直接将字段的字符集改成gbk,然后直接使用order by 排序即可。
mysql 5.x支持某列单独定义字符集。
对应的rails中,例如:
things = Thing.where(:category_id => params[:category_id]).order("CONVERT( name USING gbk )")
分享到:
相关推荐
GBK是简体中文的一个标准,包含了大部分中文字符,而UTF-8是一种多字节编码,支持全球多种语言,包括繁体中文。 当创建MySQL数据库和表时,需要指定字符集。例如,创建一个使用GBK字符集的数据库可以这样写: ```...
这样,MySQL在排序时会将UTF-8编码的字段转换为GBK编码,然后按照GBK编码的顺序进行排序。 需要注意的是,虽然GBK和GB2312可以用于简化在某些情况下的中文排序问题,但它们并不是国际化的字符集,因此在需要支持多...
1. **汉字**(Hanzi):这是中文字符本身,用UTF-8编码存储,便于跨平台操作。 2. **繁体字**(Traditional Hanzi):对应于每个汉字的繁体形式,对于需要支持繁体中文的系统来说是必要的。 3. **拼音**(Pinyin):...
可以使用`CONVERT()`函数将UTF-8编码的字段转换为GBK编码,然后再进行排序,示例如下: ```sql SELECT * FROM table_name ORDER BY CONVERT(name USING gbk) ASC; ``` 这条SQL语句将`name`字段从UTF-8转码为GBK,...
MySQL的`CONVERT()`函数可以帮助我们将UTF-8编码的字段转换为GBK,以便进行拼音排序: ```sql SELECT * FROM test ORDER BY CONVERT(value USING GBK) ASC; ``` 如果数据库字段确实使用的是UTF-8,确保在执行此...
在PHP和MySQL中处理UTF8编码的中文排序时,我们需要考虑两种主要的场景:一是PHP数组中的中文排序,二是MySQL数据库中的中文排序。这两种场景分别有不同的处理方式。 首先,我们来探讨PHP数组中的中文排序。在PHP中...
在这个查询中,`CONVERT()`函数将`hotel_name`字段的UTF-8编码转换为GBK编码,`COLLATE gbk_chinese_ci`设置GBK的中文排序规则。这样,MySQL会根据GBK编码的顺序对酒店名称进行排序,从而实现拼音排序的效果。 ### ...
MySQL默认的排序规则是基于字节的,这适用于ASCII字符集,但不适用于包含多字节字符集如UTF-8或GBK的中文字符。当我们尝试用`ORDER BY`语句对中文字段进行排序时,如果不进行特殊处理,可能会得到不符合预期的结果。...
例如,GB2312、GBK、UTF-8等字符集编码的处理,以及如何高效地生成和存储拼音和五笔码。 在数据库设计时,可以创建一个特殊的数据表,包含汉字、拼音首码、五笔首码等字段。当用户输入拼音或五笔首码时,数据库系统...
例如,在使用Navicat这样的图形界面工具时,可以在连接属性中设置`File Encoding`为`UTF-8`。 此外,如果你的数据库版本支持`COLLATE`(校对规则),还可以在创建表时指定特定的校对规则,如`utf8_general_ci`,它...
我们知道,UTF-8编码中,汉字的范围通常在一定区间内,如0xB0A1到0xD4D1。通过`HEX()`函数将字符转换为16进制表示,然后用`CONV()`函数将其转换为10进制,再通过`INTERVAL`函数判断这个数字在哪个汉字范围内,从而...
取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01): 增加...
对于UTF-8编码的数据,排序将基于字符的字节值,而非真正的中文发音顺序。这通常会导致排序结果与汉语拼音的字母顺序不同,以至于看起来“错乱”。 为了实现中文名称的正确排序,我们可以使用MySQL提供的字符串函数...