SQL按拼音查询
浏览量:2481
	
	GO
	/****** 对象:  UserDefinedFunction [dbo].[f_ch2py]    脚本日期: 01/27/2010 16:07:53 ******/
	SET ANSI_NULLS ON
	GO
	SET QUOTED_IDENTIFIER ON
	GO
	 create   function   [dbo].[f_ch2py](@chn   nchar(1))  
	  returns   char(1)  
	  as  
	  begin  
	  declare   @n   int  
	  declare   @c   char(1)  
	  set   @n   =   63  
	   
	  select   @n   =   @n   +1,  
	                @c   =   case   chn   when   @chn   then   char(@n)   else   @c   end  
	  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  
	  '丌'   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   @chn)   as   a  
	  order   by   chn   COLLATE   Chinese_PRC_CI_AS    
	  )   as   b  
	  return(@c)  
	  end  
GO
/****** 对象: UserDefinedFunction [dbo].[F_GetHelpCode] 脚本日期: 01/27/2010 16:03:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[F_GetHelpCode] (
@cName VARCHAR(20) )
RETURNS VARCHAR(12)
AS
BEGIN
DECLARE @i SMALLINT, @L SMALLINT , @cHelpCode VARCHAR(12), @e VARCHAR(12), @iAscii SMALLINT
SELECT @i=1, @L=0 , @cHelpCode=''
while @L<=12 AND @i<=LEN(@cName) BEGIN
SELECT @e=LOWER(SUBSTRING(@cname,@i,1))
SELECT @iAscii=ASCII(@e)
IF @iAscii>=48 AND @iAscii <=57 OR @iAscii>=97 AND @iAscii <=122 or @iAscii=95
SELECT @cHelpCode=@cHelpCode +@e
ELSE
IF @iAscii>=176 AND @iAscii <=247
SELECT @cHelpCode=@cHelpCode + dbo.f_ch2py(@e)
ELSE SELECT @L=@L-1
SELECT @i=@i+1, @L=@L+1 END
RETURN @cHelpCode
END
使用:select * from Eforces_Incment where dbo.F_GetHelpCode(name) like ('Z%')
上一篇:SQL半角全角查询
下一篇:MySQL触发器学习总结

