首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

简称有关问题

2012-03-12 
简称问题中文名称对应的拼音简称 规则是:中文名称的拼音全称的 的首个字符大写。例如下:中文名称拼音简称中

简称问题
中文名称对应的拼音简称 规则是:
中文名称的拼音全称的 的首个字符大写 。

例如下:

中文名称 拼音简称
中国移动 ZGYY 
11中国移动 YYZGYD 
12中国电信 YYZGDX
中国电信 ZGDX 

那么错误的记录为:


中国移动 ZGYY 
12中国电信 YYZGDX


请 大侠帮着看看

[解决办法]

SQL code
--创建取汉字首字母函数(第三版)create function [dbo].[f_getpy_V3](    @Str varchar(500)='')returns varchar(500)asbegin    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 @Tselect '中国移动','ZGYY' union allselect '11中国移动','YYZGYD' union allselect '12中国电信','YYZGDX' union allselect '中国电信','ZGDX'select *,正确简称=[dbo].[f_getpy_V3](中文名称) from @T/*中文名称       拼音简称   正确简称---------- ------ --------------------中国移动       ZGYY   ZGYD11中国移动     YYZGYD YYZGYD12中国电信     YYZGDX YEZGDX中国电信       ZGDX   ZGDX*/ 

热点排行