`

sql 获取首字母

    博客分类:
  • sql
 
阅读更多

USE [GYJIAOCANDB]------------------这要改成你的数据库名称

GO

/****** 对象:  UserDefinedFunction [dbo].[getFirstLetter]    脚本日期: 01/16/2014 14:35:42 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

create function [dbo].[getFirstLetter]

    @str nvarchar(4000) 

returns nvarchar(4000) 

as 

begin

 

declare @word nchar(1),@PY nvarchar(4000)

 

set @PY=''

 

set @str=left(@str,1)

 

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

 

调用:select top 100 dbo.getFirstLetter(title) from dbo.NFavorites

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics