SQLSERVER中將人命解析成拼音的函式

2021-08-30 07:12:53 字數 2583 閱讀 8280

1.第乙個函式是取得姓名每個中文漢字的第乙個字母

create function f_getpy(@str nvarchar(4000))

returns nvarchar(4000)

asbegin

declare @py table(

ch char(1),

hz1 nchar(1) collate chinese_prc_cs_as_ks_ws,

hz2 nchar(1) collate chinese_prc_cs_as_ks_ws)

insert @py select 'a',n'吖',n'鏊'

union  all select 'b',n'八',n'簿'

union  all select 'c',n'嚓',n'錯'

union  all select 'd',n'噠',n'跺'

union  all select 'e',n'屙',n'貳'

union  all select 'f',n'發',n'馥'

union  all select 'g',n'旮',n'過'

union  all select 'h',n'鉿',n'蠖'

union  all select 'j',n'丌',n'竣'

union  all select 'k',n'咔',n'廓'

union  all select 'l',n'垃',n'雒'

union  all select 'm',n'媽',n'穆'

union  all select 'n',n'拿',n'糯'

union  all select 'o',n'噢',n'漚'

union  all select 'p',n'趴',n'曝'

union  all select 'q',n'七',n'群'

union  all select 'r',n'蚺',n'箬'

union  all select 's',n'仨',n'鎖'

union  all select 't',n'他',n'籜'

union  all select 'w',n'哇',n'鋈'

union  all select 'x',n'夕',n'蕈'

union  all select 'y',n'丫',n'蘊'

union  all select 'z',n'匝',n'做'

declare @i int

set @i=patindex('%[吖-做]%' collate chinese_prc_cs_as_ks_ws,@str)

while @i>0

select @str=replace(@str,substring(@str,@i,1),ch)

,@i=patindex('%[吖-做]%' collate chinese_prc_cs_as_ks_ws,@str)

from @py

where substring(@str,@i,1) between hz1 and hz2

return(@str)

endgo

--用法

select   dbo.f_getpy('吳蔚玲')   as   東莞市,dbo.f_getpy('ab中c國人')   as   中國人 

--將已有表中的某個字段更新成拼音字段

select name,pinyin from person_main_test

update person_main_test set pinyin=dbo.f_getpy(name)

2.獲得整個中文名字的拼音

create   function   f_getpyall(@str varchar(100))  

returns   varchar(8000) 

as  

begin

declare @returnvalue varchar(8000) 

declare   @re   table(id   int,re   varchar(8000))    

declare   @i   int,@ilen   int,@splitchr   varchar(1)  

select   @splitchr='' ,@i=1,@ilen=len(@str)  

insert   into   @re   select   @i,py   from   yingshe   where   chr=substring(@str,@i,1)  

while   @i<@ilen  

begin  

set   @i=@i+1  

insert   into   @re   select   @i,re+@splitchr+py   from   @re   a,yingshe   b  

where   a.id=@i-1   and   b.chr=substring(@str,@i,1)  

end  

select  @returnvalue= re   from   @re   where   id=@i

return  (@returnvalue)  

end  

SqlServer 複製中將大事務分成小事務分發

原文 sqlserver 複製中將大事務分成小事務分發 在sql server 複製中,當在發布資料庫執行1個大事務時,如一次性操作 十萬或百萬以上的資料。當運算元據在發布資料庫執行完成後 日誌讀取器 將掃瞄事務日誌,一次性傳遞到分發資料庫中。若上個事務未傳遞完成,連續執行多個事務,日誌讀取器 將掃...

sqlserver中將查詢結果拼接成字串

for xml path param 將查詢結果以xml格式輸出 select id,name from table1 for xml path path後面沒有引數時,每行資料被預設標籤包裹,每行列資料被被其列名標籤包裹。結果如下 1 holab 2name1 每行資料最外面包裹的標籤由path的...

SQL Server索引解析

什麼是索引 拿漢語字典的目錄頁 索引 打比方 正如漢語字典中的漢字按頁存放一樣,sql server中的資料記錄也是按頁存放的,每頁容量一般為4k 為了加快查詢的速度,漢語字 詞 典一般都有按拼音 筆畫 偏旁部首等排序的目錄 索引 我們可以選擇按拼音或筆畫查詢方式,快速查詢到需要的字 詞 同理,sq...