获取汉字首字母(T-SQL函数)

一个获得汉字字符串的首字母的T-SQL函数, 可用于拼音索引,代码如下


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


--创建取拼音函数 添加到标量值函数中,以后可以直接调用此函数
ALTER function [dbo].[fGetPy](@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--while循环开始
select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)

if @chn>'z'--if开始
--此处只有一个 select 语句,原理以“字符串排序以及ASCII码表”:
select @n = @n +1,@c = --★★★select★★★
case chn --case开始
when @chn then char(@n) --case分支
else @c --case分支
end --case结束
from( --★★★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 --if对应的else
set @c=@chn
--if结束

set @return=@return+@c
end--while循环结束


return(@return)
end--函数实现结束


使用:
例:select dbo.fgetpy('喂') 结果"w"
  select * from table_Name where dbo.fgetpy(table_Name.name)=='a'

Tag标签: 索引SQL
posted on 2009-01-06 12:21 发布:水寒冰 阅读(702) 评论(0) 收藏 所属分类: SQL
  • 评论
  • 点击刷新
  • [使用Ctrl+Enter键可以直接提交]

表情图标

[smile][confused][cool][cry][eek][angry][wink][sweat][lol][stun][razz][redface][rolleyes][sad][yes][no][heart][star][music][idea]
Advertise
Category
Time Counter

离十一还有

Recent Article
Statistics
Recent Comments
Archive
Links
Support
《良机》 鲜果阅读器订阅图标
 
TOP