微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver 函数 根据汉字的首字母匹配汉字

USE [testDB]
GO
/****** Object:  UserDefinedFunction [dbo].[f_GetPy]     ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function   [dbo].[f_GetPy](@str   nvarchar(4000))
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   into   @t(chr,letter)
    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,1)+@re,@strlen=@strlen-1
    end
    return(@re)
end

 

 

调用

---测试数据--- if object_id('[pactinfo]') is not null drop table [pactinfo] go create table [pactinfo]([ID] int,[pactname] varchar(4)) insert [pactinfo] select 1,'正常' union all select 2,'中国' union all select 3,'做饭' union all select 4,'加发' ---查询--- select   * from   [pactinfo] where  dbo.f_GetPy(pactname) like 'Zg%' ---结果--- ID          pactname ----------- -------- 1           正常 2           中国 3 做饭

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐