mysql查询根据中文字母排序

在mysql中由于可以设定表字段的编码格式,导致不同编码格式下,中文排序有所差别,请看下面列子

1、如果数据表的某字段的字符编码是 utf8_general_ci,排序写法(也就是直接转换字段为gbk

        注意:实际中可以不加 COLLATE gbk_chinese_ci ASC

ORDER BY CONVERT(表别名.字段名 USING gbk) COLLATE gbk_chinese_ci ASC;

比如:

select Id Vaule,Name Text from area order by CONVERT(`Name` USING gbk)

注意:如若加上COLLATE gbk_chinese_ci ASC,结果就会按:符号-数字-英文字母-中文拼音顺序排序 

2、如果数据表的某字段的字符编码是 latin1_swedish_ci的话:

order by birary(表别名.字段名) asc ;

birary不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写


3、如果数据表的某字段的字符编码是 GBK的话:直接排序就行,因为 GBK 编码本来就是排序汉字首字母进行排序的

order by 表别名.字段名asc;

CONVERT:提供一个在不同字符集之间转换数据的方法。
COLLATE:COLLATE是一个算法语句,主要用于对字符进行排序,经常出现在表的创建语句中。sql语句里面的COLLATE主要用于对字符进行排序。

函数和算法参考地址:mysql 根据汉字首字母排序_sql 汉字一二三排序-CSDN博客

你可能感兴趣的:(mySql,Navicat,mysql,数据库)