让MySQL支持中文排序的实现方法

 更新时间:2011年11月10日 23:01:11   作者:  
编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较
让MySQL支持中文排序

编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,
例如将"name char(10)"改成"name char(10)binary"。
编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。

mysql order by 中文 排序

在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的。 这种情况在MySQL的很多版本中都存在。
如果这个问题不解决,那么MySQL将无法实际处理中文。 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。
解决方法:
对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。
如果你使用源码编译MySQL,可以编译MySQL时使用 --with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了(默认的是latin1)。也可以用 extra-charsets=gb2312,gbk 来加入多个字符集。
如果不想对表结构进行修改或者重新编译MySQL,也可以在查询语句的 order by 部分使用 CONVERT 函数。比如 select * from mytable order by CONVERT(chineseColumnName USING gbk);

UTF8 默认校对集是 utf8_general_ci , 它不是按照中文来的。你需要强制让MySQL按中文来排序。

select * from core_vender_info order by convert(vender_abbrev USING gbk) COLLATE gbk_chinese_ci

相关文章

  • MYSQL必知必会读书笔记第二章之版本更改

    MYSQL必知必会读书笔记第二章之版本更改

    本文是小编日常收集整理些有关mysql必知必会笔记整理第二章,小编感觉非常实用,特此分享到脚本之家平台,供大家参考
    2016-05-05
  • Navicat异地自动备份MySQL方法详解(图文)

    Navicat异地自动备份MySQL方法详解(图文)

    Navicat异地自动备份MySQL方法详解,使用Navicat的需要备份mysql的朋友也方便了
    2012-01-01
  • mysql、oracle默认事务隔离级别的说明

    mysql、oracle默认事务隔离级别的说明

    这篇文章主要介绍了mysql、oracle默认事务隔离级别的说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 详解MySql Date函数

    详解MySql Date函数

    这篇文章主要介绍了MySql Date函数的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • mysql日期处理函数实例解析

    mysql日期处理函数实例解析

    这篇文章主要介绍了mysql日期处理函数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 浅谈mysql中多表不关联查询的实现方法

    浅谈mysql中多表不关联查询的实现方法

    下面小编就为大家带来一篇浅谈mysql中多表不关联查询的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • MySQL数据库卸载的完整步骤

    MySQL数据库卸载的完整步骤

    这篇文章主要为大家详细介绍了MySQL数据库卸载的完整步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • mysql日志滚动

    mysql日志滚动

    日志滚动解决日志文件过大问题,比如我开启了general_log,这个日志呢是记录mysql服务器上面所运行的所有sql语句;比如我开启了mysql的慢查询
    2014-01-01
  • MySQL中修改表结构时需要注意的一些地方

    MySQL中修改表结构时需要注意的一些地方

    这篇文章主要介绍了MySQL中修改表结构时需要注意的一些地方,作者援引Percona的相关的说明来讲述如何避免相关操作导致表无法使用的问题,一些需要的朋友可以参考下
    2015-06-06
  • 简单实现SQLServer转MYSQL的方法

    简单实现SQLServer转MYSQL的方法

    SqlServer数据转换成mysql数据,可以说是一个老生常谈了,网上也有很多的方法,今天我们来看一种不一样的方法,而且也非常的简单,虽然有点小缺陷,但还是不失为一种很好的方法,当然如果结合mss2sql那就非常完美了
    2014-08-08

最新评论