中文名称对应的拼音简称 规则是:
中文名称的拼音全称的 的首个字符大写 。例如下:中文名称 拼音简称
中国移动 ZGYY
11中国移动 YYZGYD
12中国电信 YYZGDX
中国电信 ZGDX 那么错误的记录为:
中国移动 ZGYY
12中国电信 YYZGDX
请 大侠帮着看看
中文名称的拼音全称的 的首个字符大写 。例如下:中文名称 拼音简称
中国移动 ZGYY
11中国移动 YYZGYD
12中国电信 YYZGDX
中国电信 ZGDX 那么错误的记录为:
中国移动 ZGYY
12中国电信 YYZGDX
请 大侠帮着看看
就像是 中国移动 简称应该是 ZGYD 而不应该是 ZGYY
因为中国移动的 拼音是 zhong guo yi dong 取 首字母 大写 应是 ZGYD
http://blog.csdn.net/maco_wang/article/details/6260301
--创建取汉字首字母函数(第三版)
create function [dbo].[f_getpy_V3]
(
@Str varchar(500)=''
)
returns varchar(500)
as
begin
declare @i int set @i=1
while (@i<10)
begin
set @str=replace(@str,ltrim(@i),substring('一二三四五六七八九',@i,1))
set @i=@i+1
end
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 @ii=@ii+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 @c='a'
set @return=@return+@c
end
return(@return)
enddeclare @T table (中文名称 varchar(10),拼音简称 varchar(6))
insert into @T
select '中国移动','ZGYY' union all
select '11中国移动','YYZGYD' union all
select '12中国电信','YYZGDX' union all
select '中国电信','ZGDX'select *,正确简称=
[dbo].[f_getpy_V3](中文名称) from @T
/*
中文名称 拼音简称 正确简称
---------- ------ --------------------
中国移动 ZGYY ZGYD
11中国移动 YYZGYD YYZGYD
12中国电信 YYZGDX YEZGDX
中国电信 ZGDX ZGDX
*/