- SQL code
ALTER FUNCTION [dbo].[GetPy](@Str varchar(500)='') returns varchar(500) as begin --定义变量 declare @strlen int, @return varchar(500), @ii int declare @n int, @c char(1),@chn nchar(1) --设置初始值 select @strlen=len(@str),@return='',@ii=0 set @ii=0 --开始循环取出没个字符 while @ii<@strlen begin select @[email protected]+1,@n=63,@chn=substring(@str,@ii,1) if @chn>'z' select @n = @n +1 ,@c = case chn when @chn then char(@n) else @c end from( select top 27 * from( select chn = '吖' union all select '八' union all select '嚓' union all select '咑' union all select '妸' union all select '发' union all select '旮' union all select '铪' union all select '丌' --because have no 'i' union all select '丌' union all select '咔' union all select '垃' union all select '嘸' union all select '拏' union all select '噢' union all select '妑' union all select '七' union all select '呥' union all select '仨' union all select '他' union all select '屲' --no 'u' union all select '屲' --no 'v' union all select '屲' union all select '夕' union all select '丫' union all select '帀' union all select @chn ) as a order by chn COLLATE Chinese_PRC_CI_AS ) as b else set @[email protected] set @[email protected][email protected] end return(@return) end
------解决方案--------------------
恩 谢谢分享。
------解决方案--------------------
可惜不能区分多音字
------解决方案--------------------
谢谢分享
收藏
------解决方案--------------------
收藏
------解决方案--------------------
不知道怎么用啊?!
------解决方案--------------------
j9988写过
- SQL code
create function fun_getPY(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @word nchar(1),@PY nvarchar(4000),@i intset @PY=''set @i=1while (substring(@str,@i,1)<>'' or @i<=len(@str))beginset @word=substring(@str,@i,1)--如果非汉字字符,返回原字符set @[email protected]+(case when unicode(@word) between 19968 and 19968+20901then (select top 1 PY from (select 'A' as PY,N'驁' as wordunion 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>[email protected] collate Chinese_PRC_CS_AS_KS_WS order by PY ASC) else @word end)set @[email protected]+1endreturn @PYend--函数调用实例:select dbo.fun_getPY('中华人民共和国'),dbo.fun_getPY('中華人民共和國')结果都为:ZHRMGHG