mssql 中文字元處理(字元集編碼和排序規則)

來源:互聯網
上載者:User
關鍵字 網路程式設計 Mssql教程

mssql 中文字元處理(字元集編碼和排序規則)
sqlserver中文處理涉及到字元集編碼和排序規則,是個非常糾結的問題。

sql code

--ascii字元


select n,x=cast(n as binary(2)),u=Nchar(n) from nums where n between 32 and 126


--unicode中文字元


select n,x=cast(n as binary(2)),u=Nchar(n) from nums where n between 19968 and 40869


19968    0x4e00    一


40869    0x9fa5   


--以下兩個條件用來判斷字串是否包含漢字


like n'%[-]%' collate chinese_prc_ci_as


like n'%[一-]%' collate chinese_prc_bin


--這是因為在以上兩種不同的排序規則下,漢字的排列順序是不同的。


--中文全形標點符號


select n,x=cast(n as binary(2)),uq=Nchar(n),ub=Nchar(n-65248) from nums where n between 65281 and 65374


select Nchar(12288),Nchar(32)


65281    0xff01    !    !


65374    0xff5e    ~    ~


--以下條件用來判斷字串是否包含全形標點


like n'%[! -~]%' collate chinese_prc_bin

全形半形標點的轉換:

sql code


--full2half


create function [dbo]. [full2half] (


@string Nvarchar(max)


)


returns Nvarchar(max)


as


/*


全形(fullwidth)轉換為半形(halfwidth)


*/


begin


    declare @chr Nchar(1)


    declare @i int


    set @string = replace(@string,n' ',n' ')


    set @i = patindex(n'%[! -~]%' collate latin1_general_bin,@string)


    while @i > 0


    begin


        set @chr = substring(@string,@i,1)


        set @string = replace(@string,@chr,Nchar(unicode(@chr)-65248))


        set @i = patindex(n'%[! -~]%' collate latin1_general_bin,@string)


    end


    return @string


end


go


create function [dbo]. [half2full] (


@string Nvarchar(max)


)


returns Nvarchar(max)


as


/*


半形(halfwidth)轉換為全形(fullwidth)


*/


begin


    declare @chr Nchar(1)


    declare @i int


    set @string = replace(@string,n' ',n' ')


    set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)


    while @i > 0


    begin


        set @chr = substring(@string,@i,1)


        set @string = replace(@string,@chr,Nchar(unicode(@chr)+65248))


        set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)


    end


    return @string


end


go
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.