看网上很多方法,都是转成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. 地铁框架保护的原理_地铁屏蔽门是如何保证通讯的稳定?
  2. Object.keys 及表单清空
  3. 使用SVD求最小二乘刚性转置
  4. service请求处理逻辑
  5. 【计算机网络】TCP/IP 模型与OSI参考模型的比较
  6. 常见的6种JavaScript设计模式
  7. 我的手机 不支持箭头函数
  8. odbc mysql 配置文件_ODBC连接主流数据库的配置方法
  9. 使用Fabric8在CDI管理的bean中注入Kubernetes Services
  10. Java编程之反射中的注解详解
  11. 表单和iframe的使用
  12. 03数据库的基本查询
  13. 详解C#自动注册Dll(OCX)控件的两种方法(转)
  14. python如何输出结果到txt_python 执行结果输出为txt
  15. matlab 从 excel读取 日期_MATLAB一键记账它不香吗?
  16. 呼叫转移流程分析(一)
  17. CAN控制器和收发器
  18. itextpdf 给pdf文档添加图片
  19. 11.全站乱码过滤器
  20. KUKA机器人视觉2

热门文章

  1. Win7 下安装Unbuntu14.04双系统
  2. 基于汉宁窗FIR滤波器实现语音信号的去噪处理
  3. 迅为RK3399开发板音视频开发之Debian9 多媒体测试
  4. 获取世界人口排名2021
  5. 发现一个vue写的非常有趣的投票和统计工具
  6. 出海东南亚:印尼网红营销现状和发展趋势
  7. 我对 MyBatis 原理上瘾了
  8. 2022年河南最新建筑八大员(劳务员)模拟考试题库及答案
  9. 爬虫实战二:百度贴吧之全吧搜索
  10. 盖师贝格-撒克斯通(GS)算法及其改进算法