<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++博客   博問  
     
    主站蜘蛛池模板: 日韩大片免费观看视频播放| 亚洲免费福利在线视频| 一级做a爰片久久毛片免费看| 免费理论片51人人看电影| 亚洲精品乱码久久久久蜜桃 | 久9热免费精品视频在线观看| 国产自偷亚洲精品页65页| 精品乱子伦一区二区三区高清免费播放 | 人妻无码中文字幕免费视频蜜桃| 日本免费网站观看| 免费无码午夜福利片| 国产亚洲精品看片在线观看| 一级美国片免费看| 亚洲Av永久无码精品三区在线| 免费av片在线观看网站| 亚洲国产电影在线观看| 好男人看视频免费2019中文| 黄色免费在线网址| 久久精品国产69国产精品亚洲| 2021国内精品久久久久精免费| 亚洲视频一区二区三区四区| 国产无遮挡吃胸膜奶免费看| 本免费AV无码专区一区| 亚洲综合久久久久久中文字幕| 妞干网手机免费视频| 九九99热免费最新版| 亚洲春色在线观看| 啊v在线免费观看| 久操视频免费观看| 在线aⅴ亚洲中文字幕| 亚洲男人的天堂一区二区| 日本免费大黄在线观看| 亚洲欧美日韩综合久久久| 精品国产人成亚洲区| 国产成人免费高清激情明星| 精品在线免费视频| 97久久精品亚洲中文字幕无码 | 亚洲精品精华液一区二区| 亚洲最大AV网站在线观看| 99视频全部免费精品全部四虎 | a拍拍男女免费看全片|