用函数处理字符串(提取/比较)

SQL函数实现字母提取与字符串对比
本文介绍两个实用的SQL函数:一个用于从混合文本中提取所有小写字母;另一个用于找出第一个字符串中未出现在第二个字符串中的字符。通过具体示例展示了函数的创建与使用过程。


--1、如果提取小写字母:

createfunctionroy_Number(@namevarchar(100))
returnsvarchar(100)
as
begin

declare@svarchar(100)

whilepatindex('%[a-z]%',@namecollateChinese_PRC_BIN)>0--用二进制排序区分大小写

begin

set@s=isnull(@s,'')+substring(@name,patindex('%[a-z]%',@namecollateChinese_PRC_BIN),1)

set@name=stuff(@name,1,patindex('%[a-z]%',@namecollateChinese_PRC_BIN),'')

end

return@s
end

go

--测试:

declare@svarchar(100)

set@s='CHINA,r~!@#$o%^&*(y,&.;)(*wu^x%i943中8国$@人'

selectdbo.roy_Number(@s)as显示小写字母


/**//*
显示小写字母
----------------------------------------------------------------------------------------------------
roywuxi

(所影响的行数为1行)

*/


--dropfunctionroy_Number




go

--2、找出第一个字符串没有在第二个字符串出现的字符

createfunctionF_split(
@s1nvarchar(50),
@s2nvarchar(50),
@splitnvarchar(50)--分隔符
)
returnsnvarchar(50)
as
begin

declare@s3nvarchar(50),@lenSplitint

select@s3='',@s1=@s1+@split,@s2=@split+@s2+@split,@lenSplit=len(@split+'a')-2

whilecharindex(@split,@s1)>0

begin

ifcharindex(@split+left(@s1,charindex(@split,@s1)+@lenSplit),@s2)=0

set@s3=@s3+left(@s1,charindex(@split,@s1)+@lenSplit)

set@s1=stuff(@s1,1,charindex(@split,@s1)+@lenSplit,'')
end

returnleft(@s3,len(@s3)-1)

end

go
declare@s1nvarchar(50),@s2nvarchar(50)

select@s1='u,a,b,c,d,e,f',@s2='c,b,d,rr'

selectdbo.F_split(@s1,@s2,',')as第一个字符串没有在第二个字符串出现的字符

/**//*

第一个字符串没有在第二个字符串出现的字符
--------------------------------------------------
u,a,e,f

(所影响的行数为1行)


*/


--dropfunctionF_split
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值