用自定义函数实现中文字首字母的查询
2005-03-07 23:50
661 查看
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GetPy]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetPy]
GO
--创建取拼音函数
create function f_GetPy(@Str nvarchar(400))
returns nvarchar(4000)
as
begin
declare @strlen int,@re nvarchar(4000)
declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(1))
insert @t select '吖','A' union all select '八','B'
union all select '嚓','C' union all select '咑','D'
union all select '妸','E' union all select '发','F'
union all select '旮','G' union all select '铪','H'
union all select '丌','J' union all select '咔','K'
union all select '垃','L' union all select '嘸','M'
union all select '拏','N' union all select '噢','O'
union all select '妑','P' union all select '七','Q'
union all select '呥','R' union all select '仨','S'
union all select '他','T' union all select '屲','W'
union all select '夕','X' union all select '丫','Y'
union all select '帀','Z'
select @strlen=len(@str),@re=''
while @strlen>0
begin
select top 1 @re=letter+@re,@strlen=@strlen-1
from @t a where chr<=substring(@str,@strlen,1)
order by chr desc
if @@rowcount=0
select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end
go
--测试
select * from tabel_name where dbo.f_GetPy(name) like 'z%'
drop function [dbo].[f_GetPy]
GO
--创建取拼音函数
create function f_GetPy(@Str nvarchar(400))
returns nvarchar(4000)
as
begin
declare @strlen int,@re nvarchar(4000)
declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(1))
insert @t select '吖','A' union all select '八','B'
union all select '嚓','C' union all select '咑','D'
union all select '妸','E' union all select '发','F'
union all select '旮','G' union all select '铪','H'
union all select '丌','J' union all select '咔','K'
union all select '垃','L' union all select '嘸','M'
union all select '拏','N' union all select '噢','O'
union all select '妑','P' union all select '七','Q'
union all select '呥','R' union all select '仨','S'
union all select '他','T' union all select '屲','W'
union all select '夕','X' union all select '丫','Y'
union all select '帀','Z'
select @strlen=len(@str),@re=''
while @strlen>0
begin
select top 1 @re=letter+@re,@strlen=@strlen-1
from @t a where chr<=substring(@str,@strlen,1)
order by chr desc
if @@rowcount=0
select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end
go
--测试
select * from tabel_name where dbo.f_GetPy(name) like 'z%'
相关文章推荐
- sql 自定义函数 ,where后拼接条件跳转语句,实现可变参数查询
- kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询
- 在Power Query 中实现套用自定义函数查询(调用外部service)
- PHP自定义函数实现防止中文出现乱码
- php自定义函数实现统计中文字符串长度的方法小结
- RDLC中使用自定义函数实现数字转中文大写(金额) 可以使用聚合函数做参数
- ACCESS中的参数查询与自定义函数的实现
- find_if和函数对象结合实现对自定义类型vector的查找 复杂结构体查询某个值
- ACCESS中的参数查询与自定义函数的实现
- MapReduce实现与自定义词典文件基于hanLP的中文分词详解
- Django中利用filter与simple_tag为前端自定义函数的实现方法
- 在List范型集合中实现自定义条件复杂查询
- PHP实现的下载远程图片自定义函数分享
- Django中利用filter与simple_tag为前端自定义函数的实现方法
- -asp网站的按字母查询- [JS] 获取中文字符串拼音首字母串的函数
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除
- Linq 实践一,实现用户自定义组合查询
- jQuery自定义插件开发基础1——jQuery实用函数的实现
- 自定义函数分块实现功能
- SQLserver自定义样式主键-函数实现篇