日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql按拼音排序

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql按拼音排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
sql按拼音排序

sql按拼音排序

select * from user order by name collate Chinese_PRC_CS_AS_KS_WS

二.排序規則簡介:

??? 什么叫排序規則呢?ms是這樣描述的:"在 microsoft sql server 2000 中,
字符串的物理存儲由排序規則控制。排序規則指定表示每個字符的位模式以及存
儲和比較字符所使用的規則。"
在查詢分析器內執行下面語句,可以得到sql server支持的所有排序規則。

select * from ::fn_helpcollations()

排序規則名稱由兩部份構成,前半部份是指本排序規則所支持的字符集。
如:
chinese_prc_cs_ai_ws?
前半部份:指unicode字符集,chinese_prc_指針對大陸簡體字unicode的排序規則。
排序規則的后半部份即后綴 含義:?
_bin 二進制排序?
_ci(cs) 是否區分大小寫,ci不區分,cs區分
_ai(as) 是否區分重音,ai不區分,as區分   
_ki(ks) 是否區分假名類型,ki不區分,ks區分 
??? _wi(ws) 是否區分寬度 wi不區分,ws區分 

區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,
???????? 比較還將重音不同的字母視為不等。
區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。
區分寬度:如果想讓比較將半角字符和全角字符視為不等,請選擇該選項


三.排序規則的應用:
sql server提供了大量的windows和sqlserver專用的排序規則,但它的應用往往
被開發人員所忽略。其實它在實踐中大有用處。

例1:讓表name列的內容按拼音排序:

create table #t(id int,name varchar(20))
insert #t select 1,中
union all select 2,國
union all select 3,人
union all select 4,阿

select * from #t order by name collate chinese_prc_cs_as_ks_ws?
drop table #t
/*結果:
id????????? name??????????????? ?
----------- --------------------?
4?????????? 阿
2?????????? 國
3?????????? 人
1?????????? 中
*/

例2:讓表name列的內容按姓氏筆劃排序:

create table #t(id int,name varchar(20))

insert #t select 1,三
union all select 2,乙
union all select 3,二
union all select 4,一
union all select 5,十
select * from #t order by name collate chinese_prc_stroke_cs_as_ks_ws?
drop table #t
/*結果:
id????????? name??????????????? ?
----------- --------------------?
4?????????? 一
2?????????? 乙
3?????????? 二
5?????????? 十
1?????????? 三
*/

四.在實踐中排序規則應用的擴展
sql server漢字排序規則可以按拼音、筆劃等排序,那么我們如何利用這種功能
來處理漢字的一些難題呢?我現在舉個例子:

用排序規則的特性計算漢字筆劃

要計算漢字筆劃,我們得先做準備工作,我們知道,windows多國漢字,unicode目前
收錄漢字共20902個。簡體gbk碼漢字unicode值從19968開始。
首先,我們先用sqlserver方法得到所有漢字,不用字典,我們簡單利用sql語句就
可以得到:

select top 20902 code=identity(int,19968,1) into #t from syscolumns a,syscolumns b

再用以下語句,我們就得到所有漢字,它是按unicode值排序的:

select code,nchar(code) as cnword from #t

然后,我們用select語句,讓它按筆劃排序。

select code,nchar(code) as cnword?
from #t?
order by nchar(code) collate chinese_prc_stroke_cs_as_ks_ws,code

結果:
code??????? cnword?



本文章出處 http://www.itphome.cn/shujukuyingyong/mssql/2010-01-27/106.html

posted on 2013-04-26 10:19 巛 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/irelands/archive/2013/04/26/3044212.html

總結

以上是生活随笔為你收集整理的sql按拼音排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。