mysql 汉字根据首字母排序

1:如果数据库表字段的字符编码是latin1_swedish_ci

select * from tablename order by birary(name) asc ;
tablename:数据库表名
name:排序字段名
birary不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写

2:如果数据库表字段的字符编码是utf8_general_ci(常用)

select * from tablename WHERE 1=1 order by CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC
首先,对name字段进行gbk编码,然后,对编码后的内容根据gbk_chinese_ci进行整理排序。这样得到的结果,英文是排在中文前面的,而且是根据拼音排序的。

tablename:数据库表名
name:排序字段名
CONVERT:提供一个在不同字符集之间转换数据的方法。
COLLATE:COLLATE是一个算法语句,主要用于对字符进行排序,经常出现在表的创建语句中。sql语句里面的COLLATE主要用于对字符进行排序。
---------------------
版权声明:本文为CSDN博主「天才小小布」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w410589502/article/details/58049091

原文地址:https://www.cnblogs.com/yyhhblog/p/12427968.html

时间: 2024-11-12 19:59:16

mysql 汉字根据首字母排序的相关文章

sql 汉字按照首字母排序

SQL mysql 我们的MySQL使用latin1的默认字符集,也就是说,对汉字字段直接使用GBK内码的编码进行存储,当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法通过order by关键字正确排序. 经过网上查找,网上的办法大多是针对使用utf8字符集的数据库,主要的方法有: 1)直接转换字段为gbk,数据表某字段client_name的字符编码是utf8_general_ci; 比如: SELECT  *  FROM  `client_info_msg

mysql 中将汉字按照首字母排序

因为数据库中可以设定表的编码格式,不同编码格式下,中文的排序有区别,下面分别介绍常用编码下的排序方法. 1.如果数据表的某字段的字符编码是 utf8_general_ci,排序写法: ORDER BY CONVERT(表别名.字段名 USING gbk) COLLATE gbk_chinese_ci ASC; 例子 SELECT * FROM mg_clinic mc ORDER BY CONVERT(mc.`CLNAME` USING gbk) COLLATE gbk_chinese_ci A

vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字

1,.定义数组,可以是从后台传回的数据,也可以是自己写的数据(要json格式) 2.定义一个计算属性,用于将汉字排序(多音字的排序不推荐用这个) 3.在页面渲染

java汉字中首字母排序

最近博主做的项目中需要做一个wap版的手机通讯录,下午整理了下思路,发现这个用户名怎么排序啊?产品经理说就做成和手机通讯录类似的就行(心中一万头神兽飘过),好吧,既然提出来了那就要想办法做,作为一个程序员就应该百折不挠!! 首先博主想到的是从前端解决这个问题,所以索性找找资料,看看有没有现成的代码,找了一小会,没发现什么好的js能处理好这件事,哎...博主前端渣啊,好吧,转向后台来处理,前端你就等着专心的展示数据吧! 查阅相关api发现Comparator这个接口竟然有这个功能,真是省了好大一部

sql语句按照汉字拼音首字母排序

oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STROKE_M 按照笔划(第一顺序).部首(第二顺序)排序SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序 举例如下:表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.//按照笔划排序select * from dept order

利用MySQL数据库来处理中英文取首字母排序

很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求.  这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 DETERMINISTIC BE

localeCompare按首字母排序汉字

sort() 方法用于对数组的元素进行排序. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字.比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值. 若 a 等于 b,则返回 0. 若 a 大于 b,则返回一个大于 0 的值. <script type="text/javascript"> function sortNum

react-native按照汉字首字母排序

问题讨论详情:https://github.com/facebook/react-native/issues/12597 问题描述: JS中有一个String的内置函数:String.prototype.localeCompare(),返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同. 1 a.nickName.localeCompare(b.nickName, 'zh-Hans-CN', {sensitivity: 'accent'}) 在react-native环境

MySQL通过函数获取字符串汉字拼音首字母大写字符串

DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARCHAR(21845)) RETURNS VARCHAR(21845) CHARSET utf8 BEGIN #截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值 DECLARE tmp_str VARCHAR(21845) CHARSET gbk DEFAULT ''