SqlServer 筆記二 獲取漢字的拼音首字母

2022-01-31 23:00:45 字數 2833 閱讀 2650

一、該函式傳入字串,返回資料為:如果為漢字字元,返回該字元的首字母,如果為非漢字字元,則返回本身。

二、用到的知識點:漢字對應的unicode值,漢字的排序規則。

三、資料庫函式:

create

function getinitialletter(@chinesestring

nvarchar(4000

)) returns

nvarchar(4000

) as

begin

declare

@singlecharacter

nchar(1

),@returnstring

nvarchar(4000

) set

@returnstring=''

while

len(@chinesestring)>

0begin

--依次取單個字元

set@singlecharacter

=left(@chinesestring,1

) ----漢字字元,返回字元對應首字母,非漢字字元,返回原字元

if(unicode(@singlecharacter) between

19968

and19968

+20901

)set

@returnstring

=@returnstring+(

select

top1 py from

(select'a

'as py,n'驁'

aschinesecharacters

union

allselect'b

',n'簿'

union

allselect'c

',n'錯'

union

allselect'd

',n'鵽'

union

allselect'e

',n'樲'

union

allselect'f

',n'鰒'

union

allselect'g

',n'腂'

union

allselect'h

',n'夻'

union

allselect'j

',n'攈'

union

allselect'k

',n'穒'

union

allselect'l

',n'鱳'

union

allselect'm

',n'旀'

union

allselect'n

',n'桛'

union

allselect'o

',n'漚'

union

allselect'p

',n'曝'

union

allselect'q

',n'囕'

union

allselect'r

',n'鶸'

union

allselect's

',n'蜶'

union

allselect't

',n'籜'

union

allselect'w

',n'鶩'

union

allselect'x

',n'鑂'

union

allselect'y

',n'韻'

union

allselect'z

',n'咗'

)spellingtable

where chinesecharacters >

=@singlecharacter

collate chinese_prc_cs_as_ks_ws

order

by py asc

)else

set@returnstring

=@returnstring

+@singlecharacter

set@chinesestring

=right(@chinesestring,len(@chinesestring)-1)

endreturn

@returnstring

endgo

四、函式呼叫:

select dbo.getinitialletter('

中華人民共和國(1949 - 2016)')

返回:zhrmghg(

1949

-2016)

後記說明:

1、unicode 字元是國際組織制定的可以容納世界上所有文字和符號的字元編碼方案,世界上的任何字元都有唯一對應的一組十六進製制表示(例 『漢』:6c49),漢字對應的範圍轉換為十進位制之後是:19968 - 40869.

2、臨時表 spellingtable 字段 chinesecharacters 中儲存的漢字,以對應的 py 字段開頭的漢語拼音的最後乙個漢字。 可查新華字典:

SQL Server 筆記二 初學

1.建立帶引數的資料庫 我們寫的查詢語句,一般稱為sql指令碼 帶引數的查詢語句 create database school onprimary name schoolmain 主資料檔案邏輯名稱 size 10mb,初始大小 filegrowth 10 檔案增長比例 filename d sch...

學習筆記 Sqlserver 獲取當前天數

sql server上的日期獲取與oracle確實有些不同,現將日期獲取的方法說明如下 以下getdate 為獲取當天的日期,按照實際需求,可以替換成引數或實際的日期 當月天數 select day dateadd ms,3,dateadd m,datediff m,0,getdate 1,0 當月...

SQLserver 獲取時間

1.獲取當前日期 selectgetdate 格式化 selectconvert varchar,getdate 120 2017 05 12 16 33 10 2.獲取當前年 2017 selectdatename yyyy,getdate 2017 selectdatename year,get...