全角转半角函数

/****** Object:  UserDefinedFunction [dbo].[f_Convert]    Script Date: 01/21/2010 15:33:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER   FUNCTION   [dbo].[f_Convert](  
  @str   NVARCHAR(4000),   --要转换的字符串  
  @flag   bit                             --转换标志,0转换成半角,1转换成全角  
  )RETURNS   nvarchar(4000)  
  AS  
  BEGIN  
  DECLARE   @pat   nvarchar(8),@step   int,@i   int,@spc   int  
  IF   @flag=0  
  SELECT   @pat=N'%[!-~]%',@step=-65248,  
  @str=REPLACE(@str,N' ',N'   ')  
  ELSE  
  SELECT   @pat=N'%[!-~]%',@step=65248,  
  @str=REPLACE(@str,N'   ',N' ')  
  SET   @i=PATINDEX(@pat   COLLATE   LATIN1_GENERAL_BIN,@str)  
  WHILE   @i>0  
  SELECT   @str=REPLACE(@str,  
  SUBSTRING(@str,@i,1),  
  NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))  
  ,@i=PATINDEX(@pat   COLLATE   LATIN1_GENERAL_BIN,@str)  
  RETURN(@str)  
  END  

你可能感兴趣的:(全角转半角函数)