<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0
    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 2010-10-12 11:21 無聲 閱讀(3602) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲网站在线免费观看| 亚洲精品国产精品国自产观看| 在线观看亚洲AV日韩A∨| 四虎精品亚洲一区二区三区| 无码国产精品一区二区免费3p | 亚洲中文字幕无码专区| 99热在线免费观看| 国产精品亚洲va在线观看| 亚洲VA中文字幕无码毛片| 午夜小视频免费观看| 久久久精品午夜免费不卡| 亚洲av乱码中文一区二区三区| 亚洲av无码一区二区三区乱子伦| 九九九精品成人免费视频| 免费看成人AA片无码视频吃奶| 亚洲色中文字幕在线播放| 亚洲AV美女一区二区三区| 7777久久亚洲中文字幕蜜桃| 国产免费资源高清小视频在线观看| 国偷自产一区二区免费视频| 国产精品国产亚洲区艳妇糸列短篇| 亚洲精品成人av在线| MM131亚洲国产美女久久| 噼里啪啦电影在线观看免费高清 | 亚洲fuli在线观看| 亚洲精品成人无码中文毛片不卡| 成人免费淫片在线费观看| 久久综合国产乱子伦精品免费| 未满十八私人高清免费影院| 亚洲欧美自偷自拍另类视| 亚洲黄色在线观看网站| 亚洲色无码一区二区三区| 免费无遮挡无码永久在线观看视频| 五月婷婷在线免费观看| 在线观看免费播放av片| 产传媒61国产免费| 在线观看亚洲精品专区| 亚洲日本VA午夜在线影院| 亚洲av无码电影网| 亚洲性猛交xx乱| 亚洲人成电影在在线观看网色|