Mysql、Oracle 中将汉字(中文)按照拼音首字母排序

发布时间 2023-10-25 13:58:28作者: 编程小白1024

Mysql 将汉字(中文)按照拼音首字母排序

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

例子

select * from (
    select '嘉实资产' a, '000830' b
    union
    select '中金鼎益稳健3号单一资产管理计划' a, '002544' b
   union
    select 'xx' a, '002281' b
   union
    select '嘉实资产' a, '300287' b
   union
    select '中金鼎益稳健3号单一资产管理计划' a, '000977' b
   union
    select 'xx' a, 'FG909 ' b
    union
    select '徐州矿务集团有限公司企业年金中金组合' a, '000541 ' b
    union
    select '徐州矿务集团有限公司企业年金中金组合' a, '005541 ' b
) t
order  by CONVERT(t.a USING gbk) COLLATE gbk_chinese_ci ASC,t.b

查询结果

 

Oracle 将汉字(中文)按照拼音首字母排序

ORDER BY nlssort(表别名.字段名, 'NLS_SORT=SCHINESE_PINYIN_M')

例子

select * from (
    select '嘉实资产' a, '000830' b from dual
    union
    select '中金鼎益稳健3号单一资产管理计划' a, '002544' b  from dual
   union
    select 'xx' a, '002281' b  from dual
   union
    select '嘉实资产' a, '300287' b  from dual
   union
    select '中金鼎益稳健3号单一资产管理计划' a, '000977' b  from dual
   union
    select 'xx' a, 'FG909 ' b  from dual
    union
    select '徐州矿务集团有限公司企业年金中金组合' a, '000541 ' b  from dual
    union
    select '徐州矿务集团有限公司企业年金中金组合' a, '005541 ' b from dual
) t
order  by nlssort(t.a, 'NLS_SORT=SCHINESE_PINYIN_M'),t.b

查询结果