在日常应用中,往往根据实际需求录入一些值,而这些值不能直接使用,所以Sql中经常会对字段值进行一些常规的处理。这里搜集了(提取数字、英文、中文、过滤重复字符、分割字符的方法),方便日后查询使用。
USE [THAccountsDB]
GO
/****** Object: UserDefinedFunction [dbo].[getNormalStr] Script Date: 01/07/2017 11:03:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[getNormalStr](@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1)
declare @CN nvarchar(4000)
set @CN=''
while len(@str)>0
begin
set @word=left(@str,1)
--print @word
if unicode(@word) between 19968 and 19968+20901 --中文
or unicode(@word) between 48 and 48+10 --数字
or UNICODE(@word) between 65 and 65+26 --大写英文
or UNICODE(@word) between 97 and 97+26 --小写英文
set @CN=@CN+@word
set @str=right(@str,len(@str)-1)
end
return @CN
end
原文 http://www.cnblogs.com/dyjerry/p/4044928.html
在日常应用中,往往根据实际需求录入一些值,而这些值不能直接使用,所以Sql中经常会对字段值进行一些常规的处理。这里搜集了(提取数字、英文、中文、过滤重复字符、分割字符的方法),方便日后查询使用。
USE [THAccountsDB]
GO
/****** Object: UserDefinedFunction [dbo].[getNormalStr] Script Date: 01/07/2017 11:03:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[getNormalStr](@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1)
declare @CN nvarchar(4000)
set @CN=''
while len(@str)>0
begin
set @word=left(@str,1)
--print @word
if unicode(@word) between 19968 and 19968+20901 --中文
or unicode(@word) between 48 and 48+10 --数字
or UNICODE(@word) between 65 and 65+26 --大写英文
or UNICODE(@word) between 97 and 97+26 --小写英文
set @CN=@CN+@word
set @str=right(@str,len(@str)-1)
end
return @CN
end
原文 http://www.cnblogs.com/dyjerry/p/4044928.html