提取中文字段的 縮寫

2021-06-18 23:43:29 字數 2371 閱讀 8785

create  function  fn_getpy(@str  nvarchar(4000))  

returns  nvarchar(4000)  

--with  encryption   提取中文字段的  縮寫(每個字的首字母組合)

as  

begin  

declare  @intlen int  

declare  @strret nvarchar(4000)  

declare  @temp  nvarchar(100)  

set  @intlen  =  len(@str)  

set  @strret  =  ''  

while  @intlen  >  0  

begin  

set  @temp  =  ''  

select  @temp  =  case    

when  substring(@str,@intlen,1)  >=  '帀'  then  'z'  

when  substring(@str,@intlen,1)  >=  '丫'  then  'y'  

when  substring(@str,@intlen,1)  >=  '夕'  then  'x'  

when  substring(@str,@intlen,1)  >=  '屲'  then  'w'  

when  substring(@str,@intlen,1)  >=  '他'  then  't'  

when  substring(@str,@intlen,1)  >=  '仨'  then  's'  

when  substring(@str,@intlen,1)  >=  '呥'  then  'r'  

when  substring(@str,@intlen,1)  >=  '七'  then  'q'  

when  substring(@str,@intlen,1)  >=  '妑'  then  'p'  

when  substring(@str,@intlen,1)  >=  '噢'  then  'o'  

when  substring(@str,@intlen,1)  >=  '拏'  then  'n'  

when  substring(@str,@intlen,1)  >=  '嘸'  then  'm'  

when  substring(@str,@intlen,1)  >=  '垃'  then  'l'  

when  substring(@str,@intlen,1)  >=  '咔'  then  'k'  

when  substring(@str,@intlen,1)  >=  '丌'  then    'j'  

when  substring(@str,@intlen,1)  >=  '鉿'  then  'h'  

when  substring(@str,@intlen,1)  >=  '旮'  then  'g'  

when  substring(@str,@intlen,1)  >=  '發'  then  'f'  

when  substring(@str,@intlen,1)  >=  '妸'  then  'e'  

when  substring(@str,@intlen,1)  >=  '咑'  then  'd'  

when  substring(@str,@intlen,1)  >=  '嚓'  then  'c'  

when  substring(@str,@intlen,1)  >=  '八'  then  'b'  

when  substring(@str,@intlen,1)  >=  '吖'  then  'a'  

else  rtrim(ltrim(substring(@str,@intlen,1)))  

end  

--對於漢字特殊字元,不生成拼音碼  

if  (ascii(@temp)>127)  set  @temp  =  ''  

--對於英文中小括號,不生成拼音碼  

if  @temp  =  '('  or  @temp  =  ')'  set  @temp  =  ''  

select  @strret  =  @temp  +  @strret  

set  @intlen  =  @intlen  -  1  

end  

return  lower(@strret)  

end--select duifname from lsdtxb where duifbsh='501'

select dbo.fn_getpy('中國') py

select dbo.fn_getpy([duifname]) from lsdtxb

PL SQL Developer 中文字段顯示亂碼

在資料表中插入一條資料,可以正常出入,但是當查詢顯示的時候,中文字元無法顯示出來,而是顯示的問號 如執行以下 create table student sid number 10 sname varchar2 20 constraint student sid un unique sid inser...

pl sql developer 中文字段顯示亂碼

pl sql developer 中文字段顯示亂碼 nls lang格式 nls lang language territory.charset 有三個組成部分 語言 地域和字符集 每個成分控制了nls子集的特性。其中 language 指定伺服器訊息的語言。territory 指定伺服器的日期和數...

mysql中文字段排序

mysql中文排序失效解決方法convert name using gbk 當mysql使用的預設utf8編碼時,如果直接order by 中文字段排序,排序結果會不正確。將字段先轉換成gbk編碼再排序 convert 欄位名 using gbk convert 提供乙個在不同字符集之間轉換資料的方...