`
clark1231
  • 浏览: 252754 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

MYSQL中讓UTF-8編碼的字段按拼音排序

阅读更多

在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 )")

分享到:
评论

相关推荐

    mysql 汉字拼音数据库.zip

    1. **汉字**(Hanzi):这是中文字符本身,用UTF-8编码存储,便于跨平台操作。 2. **繁体字**(Traditional Hanzi):对应于每个汉字的繁体形式,对于需要支持繁体中文的系统来说是必要的。 3. **拼音**(Pinyin):...

    解决Hibernate中MySQL的中文排序

    GBK是简体中文的一个标准,包含了大部分中文字符,而UTF-8是一种多字节编码,支持全球多种语言,包括繁体中文。 当创建MySQL数据库和表时,需要指定字符集。例如,创建一个使用GBK字符集的数据库可以这样写: ```...

    PHP与MYSQL中UTF8 中文排序示例代码

    这样,MySQL在排序时会将UTF-8编码的字段转换为GBK编码,然后按照GBK编码的顺序进行排序。 需要注意的是,虽然GBK和GB2312可以用于简化在某些情况下的中文排序问题,但它们并不是国际化的字符集,因此在需要支持多...

    MySQL按照汉字的拼音排序简单实例

    可以使用`CONVERT()`函数将UTF-8编码的字段转换为GBK编码,然后再进行排序,示例如下: ```sql SELECT * FROM table_name ORDER BY CONVERT(name USING gbk) ASC; ``` 这条SQL语句将`name`字段从UTF-8转码为GBK,...

    MySQL按常规排序、自定义排序和按中文拼音字母排序的方法

    MySQL的`CONVERT()`函数可以帮助我们将UTF-8编码的字段转换为GBK,以便进行拼音排序: ```sql SELECT * FROM test ORDER BY CONVERT(value USING GBK) ASC; ``` 如果数据库字段确实使用的是UTF-8,确保在执行此...

    PHP与MYSQL中UTF8编码的中文排序实例

    在PHP和MySQL中处理UTF8编码的中文排序时,我们需要考虑两种主要的场景:一是PHP数组中的中文排序,二是MySQL数据库中的中文排序。这两种场景分别有不同的处理方式。 首先,我们来探讨PHP数组中的中文排序。在PHP中...

    mysql的中文数据按拼音排序的2个方法

    在这个查询中,`CONVERT()`函数将`hotel_name`字段的UTF-8编码转换为GBK编码,`COLLATE gbk_chinese_ci`设置GBK的中文排序规则。这样,MySQL会根据GBK编码的顺序对酒店名称进行排序,从而实现拼音排序的效果。 ### ...

    MySQL对中文进行排序详解及实例

    MySQL默认的排序规则是基于字节的,这适用于ASCII字符集,但不适用于包含多字节字符集如UTF-8或GBK的中文字符。当我们尝试用`ORDER BY`语句对中文字段进行排序时,如果不进行特殊处理,可能会得到不符合预期的结果。...

    获取拼音首码和五笔首码

    例如,GB2312、GBK、UTF-8等字符集编码的处理,以及如何高效地生成和存储拼音和五笔码。 在数据库设计时,可以创建一个特殊的数据表,包含汉字、拼音首码、五笔首码等字段。当用户输入拼音或五笔首码时,数据库系统...

    mysql如何按照中文排序解决方案

    例如,在使用Navicat这样的图形界面工具时,可以在连接属性中设置`File Encoding`为`UTF-8`。 此外,如果你的数据库版本支持`COLLATE`(校对规则),还可以在创建表时指定特定的校对规则,如`utf8_general_ci`,它...

    mysql 中如何取得汉字字段的各汉字首字母

    我们知道,UTF-8编码中,汉字的范围通常在一定区间内,如0xB0A1到0xD4D1。通过`HEX()`函数将字符转换为16进制表示,然后用`CONV()`函数将其转换为10进制,再通过`INTERVAL`函数判断这个数字在哪个汉字范围内,从而...

    易语言程序免安装版下载

    取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):  增加...

    PHP读取数据库并按照中文名称进行排序实现代码

    对于UTF-8编码的数据,排序将基于字符的字节值,而非真正的中文发音顺序。这通常会导致排序结果与汉语拼音的字母顺序不同,以至于看起来“错乱”。 为了实现中文名称的正确排序,我们可以使用MySQL提供的字符串函数...

Global site tag (gtag.js) - Google Analytics