看网上很多方法,都是转成gbk,然后截取第一个字,然后按字的gbk值的区间去获取A-Z,然后排序。

ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(TRIM(列名) USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z')

不用utf8,是因为字符集里,huf8是按汉字笔画一个个排,gbk是按拼音顺序给汉字排号。

所以相对来说,gbk比uft8更简单。

但是有个问题,gbk里一开始存储的汉字数量有限,导致有一批数是在后来加进去的,并未在之前的拼音排序内,比如

泗        涞        婺        麒        邳        鑫        闵        …………

导致在转化成拼音首字母时,都是“Z”。

(还有些第一个字符是数字或者字符的,这些另说)

网上也有看到解决办法,要搞个新表,然后写个function,然后巴拉巴拉

我嫌麻烦,而且我工作中用到的这类的特殊字其实很有限。每次全量更新数据的时候,字还是那些字(大多数是地名,还是限定区域的,顶多来几个新的,再处理处理呗)。

所以,为了方便自己以后操作,特地梳理了一下不在gbk顺序里的我常用的字,直接写好了sql,以后我的那张表全表更新后,直接run一下这些sql即可,反正已经加了一个字段“pinyin”,专门保存是A还是Z还是其他数字字符“其他”:

UPDATE 表 SET pinyin = ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(TRIM(列名) USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6, 0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1), 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P', 'Q','R','S','T','W','X','Y','Z');UPDATE 表 SET pinyin = UPPER(LEFT(CONVERT(TRIM(列名) USING gbk),1)) WHERE pinyin IS NULL;UPDATE 表 SET pinyin = '其他' WHERE pinyin NOT IN ('A','B','C','D','E','F','G','H','J','K','L','M','N','O','P', 'Q','R','S','T','W','X','Y','Z','i','I','U','V');UPDATE 表 SET pinyin = 'C' WHERE 列名 LIKE '重庆%';
UPDATE 表 SET pinyin = 'M' WHERE 列名 LIKE '渑池%';
UPDATE 表 SET pinyin = 'X' WHERE 列名 LIKE '荥阳%';
UPDATE 表 SET pinyin = 'L' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) in ('醴','蠡','漯','涞','浏','泸','崂','栾');
UPDATE 表 SET pinyin = 'W' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('婺');
UPDATE 表 SET pinyin = 'D' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('宕');
UPDATE 表 SET pinyin = 'M' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('闵','岷');
UPDATE 表 SET pinyin = 'J' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('莒','旌','泾');
UPDATE 表 SET pinyin = 'S' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('濉','泗','歙','汜','沭');
UPDATE 表 SET pinyin = 'T' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('钛','滕');
UPDATE 表 SET pinyin = 'X' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('鑫','潇');
UPDATE 表 SET pinyin = 'P' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('郫','邳','濮');
UPDATE 表 SET pinyin = 'G' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('藁','珙');
UPDATE 表 SET pinyin = 'B' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('璧');
UPDATE 表 SET pinyin = 'Y' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('黟','颍','鄞');
UPDATE 表 SET pinyin = 'H' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('邗');
UPDATE 表 SET pinyin = 'Q' WHERE LEFT(CONVERT(TRIM(列名) USING gbk),1) IN ('麒','邛','谯','衢','蕲');

mysql 按汉字拼音首字母排序或聚合相关推荐

  1. MySQL按照汉字拼音首字母排序

    按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字37 ...

  2. mysql查询汉字拼音首字母的方法_MySQL查询汉字拼音首字母的方法

    下面为您介绍了MySQL查询汉字拼音首字母的方法,该方法极具实用价值,如果您之前遇到过类似方面的问题,不妨一看. MySQL查询汉字拼音首字母方法如下: 1.建立拼音首字母资料表 Sql代码: DRO ...

  3. 数据库按照汉字拼音首字母排序

    ===>sqlserver按照汉字拼音首字母排序 select * from table order by name collate Chinese_PRC_CS_AS_KS_WS 在修改sql ...

  4. java按照汉字拼音首字母排序

    实现按照汉字拼音字母排序的方法有两种: 一,就是在用java代码处理 要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境: 这里用到了Collator类,此类实现了Comparator接 ...

  5. C#按汉字拼音首字母排序

    可参考以下博客. C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母 - 影子科技 - 博客园 http://www.cnblogs.com/ya ...

  6. mysql获取汉字拼音首字母_MySQL数据库获取汉字拼音的首字母函数

    需求简介:最 近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以 了,不过项目中有多处功能是需要这个效果的, ...

  7. mysql查询汉字拼音首字母_MySQL查询汉字的拼音首字母实例教程

    最好的方法还是用 PHP 来取拼音首字母,在 MySQL 里新建一个字段来存放 php 里查询汉字的拼音首字母已经有很多参考的代码了. 现在给出在mysql 里实现的, 测试环境是mysql-5.0. ...

  8. js根据汉字拼音首字母排序分组

    最近有一个需求,就是做一个类似通讯录的玩意.这里其实前端的话网上挺多轮子的,直接改改就好了,但是有一点就是在得到汉字之后如何根据拼音的首字母排序并且分组就是一个小问题,当然解决起来也是挺简单的啰.由于 ...

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

    oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序 SCHINESE_S ...

最新文章

  1. Doxygen生成代码关系调用图
  2. nagios安装与配置详解1
  3. Lesson 12.5 softmax回归建模实验
  4. C++ STL vector(向量)
  5. Python基础教程:set集合的教程
  6. 【项目管理】认识项目相关方(干系人)管理
  7. PL/SQL如何设置 窗口列表默认显示
  8. hive hql文档_大数据学习路线分享hive的运行方式
  9. 95-280-048-源码-资源管理-CPU
  10. mysql 8 多线程_mysql8 参考手册--通用线程状态
  11. 对字节输入输出流的理解以及几道练习题
  12. 为什么发烧友更偏爱头戴式蓝牙耳机呢?五款高音质音乐蓝牙耳机推荐
  13. 第五课 基本数据类型
  14. shell 脚本教程 入门级
  15. Qt_MinGW编译二维码生成库Zint及使用
  16. CAD 关于打断和合并对象
  17. dvm 与jvm 区别
  18. 火车售票-线程3种实现
  19. Java中存储金额用什么数据类型?
  20. MATLAB Support Package Installer无法正常打开的问题

热门文章

  1. Ultimate, Community, Educational 终极版 社区版 教育版 区别 不同
  2. CSDN博客访问量突破10万
  3. Adblock 历史
  4. 千鸟配送获1000万元天使轮融资,同城货运烧钱大战之后的冷静思考?
  5. 在GreenBrowser中使用35766书签
  6. Oracle 数据库萌新经验小结
  7. 华为 5G 开关被取消,背后的真相是...
  8. ansible——playbook剧本
  9. 2013我在奔波中走过
  10. 小米首款桌面电脑来了!