微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver提取中文_提取英文_提取数字函数



--【提取中文字符】
IF OBJECT_ID('dbo.fun_getCN') IS NOT NULL
DROP FUNCTION dbo.fun_getCN
GO
create  function  dbo.fun_getCN(@str  varchar(4000))      
returns  varchar(4000)      
as      
begin      
 declare  @word  nchar(1),@CN  varchar(4000)      
 set  @CN=''      
 while  len(@str)>0      
 begin      
	set  @word=left(@str,1)      
	if unicode(@word)  between  19968  and  40869  
		set  @CN=@CN+@word  
	set  @str=right(@str,len(@str)-1)      
 end      
 return  @CN      
end      
GO
  
select dbo.fun_getCN('123我KK哈哈45')  
--中国


select unicode('一')
select unicode('龥')

unicode中文编码范围:19968~40869
参考 http://www.uni-graz.at/~vollmanr/unicode/uni_chinese.html



--【提取中文】
IF OBJECT_ID('DBO.get_Chinese') IS NOT NULL
DROP FUNCTION DBO.get_Chinese
GO
CREATE FUNCTION DBO.get_Chinese(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
 WHILE PATINDEX('%[^吖-座]%',@S) > 0
 SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')
 RETURN @S
END
GO
select DBO.get_Chinese('123我KK哈哈45')



--【提取数字】
IF OBJECT_ID('dbo.GET_NUMBER2') IS NOT NULL
DROP FUNCTION dbo.GET_NUMBER2
GO
CREATE FUNCTION dbo.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
 WHILE PATINDEX('%[^0-9]%',@S) > 0
 BEGIN
	set @s=stuff(@s,patindex('%[^0-9]%',@s),'')
 END
 RETURN @S
END
GO

select dbo.GET_NUMBER2('123我KK哈哈45')


--【提取英文】
IF OBJECT_ID('DBO.get_English') IS NOT NULL
DROP FUNCTION DBO.get_English
GO
CREATE FUNCTION DBO.get_English(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
 WHILE PATINDEX('%[^a-z]%',patindex('%[^a-z]%','')
 END
 RETURN @S
END
GO

SELECT DBO.get_English('123我KK哈哈45')


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐