获得汉字字符串的首字母(T-SQL函数)
2007-05-09 12:05
363 查看
/*--获得汉字字符串的首字母--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fGetPy]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fGetPy]
GO
--创建取拼音函数
create function 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--函数实现结束
go
--测试
select dbo.fgetpy('魏保光') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('刘子良') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('吴过') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('东北') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('王大海八丫') as 王大海八丫,dbo.fgetpy('服務地圖') as 服務地圖
--删除拼音函数
drop function fgetpy
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fGetPy]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fGetPy]
GO
--创建取拼音函数
create function 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--函数实现结束
go
--测试
select dbo.fgetpy('魏保光') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('刘子良') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('吴过') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('东北') as 姓名拼音,dbo.fgetpy('ab中c国人') as 中国人
select dbo.fgetpy('王大海八丫') as 王大海八丫,dbo.fgetpy('服務地圖') as 服務地圖
--删除拼音函数
drop function fgetpy
相关文章推荐
- 获得汉字字符串的首字母(T-SQL函数)
- 获得汉字字符串的首字母(T-SQL函数)(转)
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串拼音首字母
- 获得汉字字符串的首字母
- 经典T-SQL[获得汉字字符串的首字母]
- 完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数
- 一个sql函数,把汉字首字母转换成拼音,
- Sql得到(去除)字符串中所有汉字,字母,数字的函数
- 获取汉字拼音首字母的SQL函数
- python 判断unicode字符串是汉字/数字/字母,全角/半角转换
- javascript检查输入字符串是否只由汉字、字母组成
- 获得汉字的拼音首字母以及整个拼音
- 判断CString字符串中各位是数字,大小写字母,符号,汉字.xml
- 格式化字符串长度,超出部分显示省略号,区分汉字跟字母