方法一:
drop function dbo.getFirstChar
create function getFirstChar(@str varchar(500))
returns varchar(500)
as
begin
declare
@firstChar varchar(500),
@Chinese_String char(46),
@English_String char(24),
@Chinese_Char varchar(2),
@English_Char char(1),
@i int,
@j int
set @firstChar = ''
set @Chinese_String = '吖八嚓哒讹发旮铪讥咔垃妈拿噢趴七蚺箬他哇夕丫匝'
set @English_String = 'IABCDEFGHJKLMNOPQRSTWXYZ'
set @i = 1
set @j = 1
while @i <= len(@str)
begin
set @Chinese_Char = substring(@str,@i,1)
set @j = 1
while @j <= 24
begin
set @English_Char = ''
if @j = 24
begin
select @English_Char=substring(@English_String,@j,1) where @Chinese_Char >= substring(@Chinese_String,@j-1,1)
end
else
begin
select @English_Char=substring(@English_String,@j,1) where @Chinese_Char < substring(@Chinese_String,@j,1)
end
if @English_Char <> ''
begin
break
end
set @j = @j + 1
end
set @firstChar = @firstChar + case when ltrim(rtrim(@English_Char)) = 'I' then @Chinese_Char else ltrim(rtrim(@English_Char)) end
set @i = @i + 1
end
return(@firstChar)
end
select dbo.getFirstChar('显示字母')方法二:
declare @strlen int,@return varchar(500),@ii int
declare @n int,@c char(1),@chn nchar(1),@str varchar(500)
set @str = '我爱伟大的周星驰'
select @strlen=len(@str),@return='',@ii=0
while @ii<@strlen
begin
select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)
if @chn>'z'
begin
--select @c,char(@n)
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
-- select @chn,@c
end
else set @c='a'
set @return=@return+@c
end
select @return
--SELECT CHAR(64)