步骤:
1,在函数下创建一个函数名为fun_getPY的函数
2,编写fun_getPY函数,复制脚本代码
3,调用函数,查看结果
实现
1,如图
2,脚本代码
create function [dbo].[fun_getPY](@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nvarchar(1),@PY nvarchar(4000)
set @PY=''
set @str = ltrim(rtrim(@str))
while len(@str)>0
begin
set @word=left(@str,1)
set @PY=@PY+ltrim((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)
when unicode(@word) between 8544 and 8552 --希腊字母1-9
then nchar(unicode(@word)-8495)
when unicode(@word) = 8553 --希腊字母10
then '0'
when unicode(@word) between 48 and 57 --数字0-9
then @word
when unicode(@word) between 65296 and 65305 --全角数字0-9
then nchar(unicode(@word)-65248)
when unicode(upper(@word)) between 65 and 90 --字母a-z和A-Z
then upper(@word)
when unicode(upper(@word)) between 65313 and 65338 --全角字母a-z和A-Z
then nchar(unicode(upper(@word))-65248)
else '' end)) --如果非汉字字符或非字母、数字、希腊字母、全角字母、全角数字,返回空字符
--set @str=right(@str,len(@str)-1)
set @str = substring(@str,2,len(@str)-1)
end
return @PY
end
3,调用函数
select [dbo].[fun_getPY] ('我是Aimyone!')
//注意:调用函数的时候,函数名要写全[dbo].[fun_getPY],否则无法识别函数
结果视图: