SQL 中文首字母提取与自定义排序

中文首字母提取

利用汉字编码边界值提取

--中文转首字母
select case when  regexp_like(t.party_name,'^[a-zA-Z0-9]') then upper(substr(t.party_name,0,1))
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('吖', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('驁', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'A'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('八', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('簿', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'B'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('嚓', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('錯', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'C'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('咑', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('鵽', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'D'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('妸', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('樲', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'E'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('发', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('猤', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'F'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('旮', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('腂', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'G'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('妎', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('夻', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'H'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('丌', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('攈', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'J'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('咔', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('穒', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'K'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('垃', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('擽', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'L'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('嘸', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('椧', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'M' 
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('拏', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('瘧', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'N'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('筽', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('漚', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'O'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('妑', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('曝', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'P'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('七', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('裠', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'Q'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('亽', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('鶸', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'R'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('仨', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('蜶', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'S'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('侤', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('籜', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'T'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('屲', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('鶩', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'W'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('夕', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('鑂', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'X'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('丫', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('韻', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'Y'
when NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')>=NLSSORT('帀', 'NLS_SORT=SCHINESE_PINYIN_M') and 
NLSSORT(t.party_name, 'NLS_SORT=SCHINESE_PINYIN_M')<=NLSSORT('咗', 'NLS_SORT=SCHINESE_PINYIN_M')   then 'Z'
else substr(t.party_name,0,1)  
end AS word,t.*   from  party.cb_group_party t ;

排序,a-z 0-9 特殊字符

select * from party.cb_group_party t order by translate(t.party_name,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'||t.party_name,'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')nulls last;

mysql版本

select * from test order by names REGEXP '^[0-9]', convert(names USING gbk);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值