当前位置: 首页 > news >正文

mysql8中文排序_mysql中utf8编码的中文字段按拼音排序

http://blog.s777n.net/orderbychinesefieldutf8/comment-page-2/

2010-08-24 17:36 by TomorrowMan | 分类: 技术, 数据库

如果在mysql中使用字符集为utf8,想要对中文字段用order by chinese_field 排序,那么出来的顺序并不是按照拼音排序的,不是我们想要的结果。

解决方法:

1、改变字符编码为gbk。

icon_biggrin.gif DD

2、不想改变编码的话,可以用如下方法:

对中文字段使用gbk编码排序:

SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;

当然这需要你安装mysql时安装了gbk字符集,不然会报错:#1115 - Unknown character set: 'gbk'

试了好像有不对的

mysql> select * from ywang order by convert(tname using gbk);

+------+--------+

| id   | tname  |

+------+--------+

|    2 | 啊    |

|    2 | 啊    |

|    1 | 测试 |

|    1 | 测试 |

|    4 | 云    |

|    4 | 云    |

|    3 | 打    |

|    3 | 打    |

+------+--------+

8 rows in set (0.01 sec)

上面的原因是插入数据client段使用字符集问题

另一例:

mysql> select * from yy order by convert(tname using gbk);

+------+-------+

| id   | tname |

+------+-------+

|    2 | 啊    |

|    1 | 才    |

|    4 | 他    |

|    3 | 一    |

+------+-------+

4 rows in set (0.01 sec)

mysql> show create table yy;

+-------+--------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                             |

+-------+--------------------------------------------------------------------------------------------------------------------------+

| yy    | CREATE TABLE `yy` (

`id` int(11) DEFAULT NULL,

`tname` varchar(50) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

+-------+--------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> select * from yy;

+------+-------+

| id   | tname |

+------+-------+

|    1 | 才    |

|    2 | 啊    |

|    3 | 一    |

|    4 | 他    |

+------+-------+

4 rows in set (0.00 sec)

***************************

对于改字符集的方法,加一个库默认字符集gbk,建表,然后排序,得到的就是拍好的

************************************

一些相关语句

1、使用SHOWCHARACTERSET语句列出数据库中可用的字符集:

mysql>SHOWCHARACTERSET;2、要想列出一个字符集的校对(Collation)规则,使用SHOW COLLATION语句。

例如,要想查看latin1(“西欧ISO-8859-1”)字符集的校对规则,使用下面的语句查找那些名字以latin1开头的校对规则:

mysql>SHOW COLLATIONLIKE'latin1%';3.查看数据表的字符集

mysql>showcreatetablemytable;

这个命令也可以查看建这个表的SQL语句。

******************************

有空还是要看一下字符集的问题


http://www.taodudu.cc/news/show-647651.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • html 分级切换菜单_FL studio系列教程(十六):FL Studio查看菜单讲解
  • mysql还原数据库后日期显示3000_mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法...
  • java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...
  • docker mysql sock_docker mysql安装
  • mysql最大述_mysql最大字段数量及 varchar类型总结
  • php协程实现mysql异步_swoole与php协程实现异步非阻塞IO开发
  • mysql中xml类型_使用 SQLXML 数据类型
  • mysql语法6_全面接触SQL语法(6)_mysql
  • sqlerver mysql_转 MYSQL学习(一)
  • tcpdump 识别成dns_dns tcpdump
  • java linkedhashmap_java学习-hashMap和linkedHashMap
  • 简单java题_java
  • java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用
  • java jar log4j_使用Log4j
  • java课程设计进程管理_GitHub - Shadow-Java/OS: 操作系统课程设计,关键词:进程同步与互斥、进程死锁、LRU页面替换算法、时间片轮转算法、时钟等...
  • mysql中建立索引的原则_在SQL数据库中设定索引的原则是什么?(注意是设定不是创建)...
  • java宝典_JAVA宝典之_JAVA基础
  • java blockingqueue_Java多线程进阶(三一)—— J.U.C之collections框架:BlockingQueue接口...
  • java 转账 锁_Java多线程 多个人转账发生死锁
  • java 静态变量 存储_Java学习笔记9---类静态成员变量的存储位置及JVM的内存划分...
  • java坐标移动题目case_坐标移动
  • java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...
  • php中怎么过滤器_PHP 过滤器
  • java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
  • java treeset 转array,Java TreeSet toArray(T[])用法及代碼示例
  • java佳沃维洛奇,新品速递:JAVA 双雄耀世登场
  • 如何建立分类模型matlab,创建简单模型 - MATLAB Simulink - MathWorks 中国
  • MATLAB已知坐标均匀取电,基于MATLAB带钢卷取电液伺服控制系统的分析(word文档良心出品)(11页)-原创力文档...
  • wordpress content.php,2020主题:content.php
  • php要字符串的后四位,php如何截取字符串后四位