sql存儲過程獲取漢字拼音頭字母函數(shù)
更新時間:2011年10月25日 15:33:29 作者:
sql存儲過程獲取漢字拼音頭字母函數(shù),需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
--函數(shù)
CREATE function fn_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
--WITH ENCRYPTION
as
begin
declare @intLenint
declare @strRetnvarchar(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) >= '發(fā)' 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
go
--調(diào)用
select dbo.fn_getpy('張三')
--返回:zs
答?。?2:
取漢字拼音首字母的存儲過程
Create function fun_getPY ( @str nvarchar(4000) )
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非漢字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (
select top 1 PY
from
(
select 'A' as PY,N'驁' as word
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select '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)
end
return @PY
end
您可能感興趣的文章:
- 獲取SqlServer存儲過程定義的三種方法
- 解析:php調(diào)用MsSQL存儲過程使用內(nèi)置RETVAL獲取過程中的return值
- PHP調(diào)用MsSQL Server 2012存儲過程獲取多結(jié)果集(包含output參數(shù))的詳解
- mysql存儲過程 在動態(tài)SQL內(nèi)獲取返回值的方法詳解
- SqlServer獲取存儲過程返回值的實(shí)例
- PostgreSQL中調(diào)用存儲過程并返回數(shù)據(jù)集實(shí)例
- delphi mysql adbquery數(shù)據(jù)提供程序或其他服務(wù)返回 E_FAIL 狀態(tài)
- sql添加數(shù)據(jù)后返回受影響行數(shù)據(jù)
- Mysql中返回一個數(shù)據(jù)庫的所有表名,列名數(shù)據(jù)類型備注
- sql獲取存儲過程返回數(shù)據(jù)過程解析
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)簡明備忘錄 線性表
線性表是線性結(jié)構(gòu)的抽象,線性結(jié)構(gòu)的特點(diǎn)是結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對一的線性關(guān)系。2010-03-03SQL Server之SELECT INTO 和 INSERT INTO SELECT案例詳解
這篇文章主要介紹了SQL Server之SELECT INTO 和 INSERT INTO SELECT案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08SQL Server 中的數(shù)據(jù)類型隱式轉(zhuǎn)換問題
這篇文章主要介紹了SQL Server 中的數(shù)據(jù)類型隱式轉(zhuǎn)換問題,本文給大家介紹的非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08sql server 2012 備份集中的數(shù)據(jù)庫備份與現(xiàn)有的xxx數(shù)據(jù)庫不同
這篇文章主要介紹了sql server 2012 備份集中的數(shù)據(jù)庫備份與現(xiàn)有的xxx數(shù)據(jù)庫不同,需要的朋友可以參考下2016-07-07SQL2000個人版 應(yīng)用程序正常初始化失敗0乘以C0000135失敗
應(yīng)用程序正常初始化(0*c0000135)失敗。是什么意思?2011-01-01