SQL2005 怎麼獲取漢字的拼音首字母

2022-08-13 20:51:08 字數 2617 閱讀 2828

在sql2005中,怎麼獲取漢字拼音的首字母?例如,中國人民 ,其拼音首字母組合該為zgrm。我們可以在在sql2005中定義乙個函式fun_getpy,sql語法如下:

/*

***** 物件: userdefinedfunction [dbo].[fun_getpy] 指令碼日期: 12/28/2011 10:48:52 *****

*/if

exists (select

*from sys.objects where

object_id

=object_id(n'

[dbo].[fun_getpy]

') and type in (n'

fn', n'

if', n'

tf', n'

fs', n'

ft'))

drop

function

[dbo

].[fun_getpy]/*

***** 物件: userdefinedfunction [dbo].[fun_getpy] 指令碼日期: 12/28/2011 10:49:00 *****

*/set ansi_nulls on

goset quoted_identifier on

gocreate

function

[dbo

].[fun_getpy

](@str

nvarchar(4000))

returns

nvarchar(4000)

asbegin

declare

@word

nchar(1),@py

nvarchar(4000)

set@py=''

while

len(@str)>

0begin

set@word

=left(@str,1)

--如果非漢字字元,返回原字元

set@py

=@py

+(case

when

unicode(@word) between

19968

and19968

+20901

then (select

top1 py from (

select'a

'as py,n'驁'

as word

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'咗'

) t

where word>=

@word collate chinese_prc_cs_as_ks_ws

order

by py asc) else

@word

end)

set@str

=right(@str,len(@str)-

1)

endreturn

@pyend

函式建立之後,可以用下面的語句檢查該函式:

select dbo.fun_getpy ('

56g中國人民rm

')

在機器上執行之後的結果如下:

56gzgrmrm

SQL2005使用CLR函式獲取行號

行號可以廣泛使用在分頁或者報表當中。sql2005使用row number來獲取,但這個需要配合order來處理,資料量大的情況下可能會影響效能。要實現clr自定函式返回行號的關鍵問題是乙個自增長的序列如何儲存,並且需要考慮併發和釋放的問題。這裡我用了乙個靜態的集合來保持這個事物,缺點是每次查詢必須...

SQL2005使用CLR函式獲取行號

行號可以廣泛使用在分頁或者報表當中。sql2005使用row number來獲取,但這個需要配合order來處理,資料量大的情況下可能會影響效能。要實現clr自定函式返回行號的關鍵問題是乙個自增長的序列如何儲存,並且需要考慮併發和釋放的問題。這裡我用了乙個靜態的集合來保持這個事物,缺點是每次查詢必須...

sql2008怎麼轉移到sql2005

一般來說,最新版本會向下相容,如果舊版本想用新版本則不行。但是還是有一些辦法的,可以參考一下。物件資源管理器 沒有的話按f8 連線到你的2008例項 右鍵你要降級的資料庫 任務 生成指令碼 在隨後出現的指令碼中,單擊 下一步 直到 選擇資料庫 步驟,確定資料庫是你要降級的資料庫,並勾選 為所選資料庫...