日期:2014-05-18  浏览次数:20515 次

sql的模糊查询
怎么通过首字母实现模糊查询?
  例如: 查询 张三 输入zs即可查询出"张三"这个字符

------解决方案--------------------
参考 http://topic.csdn.net/u/20090531/17/9a3a17dd-53d0-44d1-bc12-ac8a3daa78d8.html
------解决方案--------------------
SQL code
create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000)
as
begin
    declare @word nchar(1)
    declare @PY nvarchar(4000)
    set @PY=''
    WHILE len(@str)>0
    begin
        set @word=left(@str,1)
        set @PY=@PY+(
            case when unicode(@word) between 19968 and 19968+20901
            then (
                select top 1 PY from (
                                             select 'A' as PY,N'驁' as word 
                             union all select 'B',N'簿' 
                             union all select 'C',N'錯' 
                     union all select 'D',N'鵽' 
                     union all select 'E',N'樲' 
                     union all select 'F',N'鰒' 
                     union all select 'G',N'腂' 
                     union all select 'H',N'夻' 
                     union all select 'J',N'攈' 
                     union all select 'K',N'穒' 
                     union all select 'L',N'鱳' 
                     union all select 'M',N'旀' 
                     union all select 'N',N'桛' 
                     union all select 'O',N'漚' 
                     union all select 'P',N'曝' 
                     union all select 'Q',N'囕' 
                     union all select 'R',N'鶸' 
                     union all select 'S',N'蜶' 
                     union all select 'T',N'籜' 
                     union all select 'W',N'鶩' 
                     union all select 'X',N'鑂' 
                     union all select 'Y',N'韻' 
                     union all select 'Z',N'咗' 

                )T where word>=@word collate Chinese_PRC_CS_AS_KS_WS order by PY asc
            )else @word end
        )
        set @str=right(@str,len(@str)-1)
    end
    return @PY
end
go
select dbo.fun_getPY('dddd)
drop function fun_getPY