TSQL:判断某较短字符串在较长字符串中出现的次数。

本文介绍两种使用SQL来计算一个较短字符串在较长字符串中出现次数的方法。第一种方法利用REPLACE函数通过替换来计算出现次数;第二种方法采用CHARINDEX与SUBSTRING结合的方式,循环查找并移除已找到的子串,直至不再存在该子串。

给定一个较短字符串shortStr='ab',和一个较长字符串longStr='adkdabkwelabwkereabrsdweo2342ablk234lksdfsdf1abe';

判断shortStr在longStr中出现的次数的方案,要求使用sql实现:

方案一:使用replace函数:

declare @llongStr nvarchar(64)
declare @shortStr nvarchar(16);
set @llongStr='adkdabkwelabwkereabrsdweo2342ablk234lksdfsdf1abe';
set @shortStr='ab';

declare @newStr nvarchar(64);
set @newStr=replace(@llongStr,@shortStr,'');

declare @shortDisplayCount int;
set @shortDisplayCount=(len(@llongStr)-len(@newStr))/len(@shortStr);

select @shortDisplayCount;

打印结果:

方案二:使用charindex和substring实现:

declare @longStr nvarchar(64)
declare @shortStr nvarchar(16);
set @longStr='adkdabkwelabwkereabrsdweo2342ablk234lksdfsdf1abe';
set @shortStr='ab';       

declare @findCount int;     
declare @idx int;
set @findCount=0;

while charindex(@shortstr,@longStr)>0
begin
    set @findCount+=1;
    set @idx=charindex(@shortstr,@longStr)
    
    set @longStr=substring(@longStr,@idx+len(@shortStr),len(@longStr)-@idx);
    print @longStr         
end

print @findCount

输出结果:

kwelabwkereabrsdweo2342ablk234lksdfsdf1abe
wkereabrsdweo2342ablk234lksdfsdf1abe
rsdweo2342ablk234lksdfsdf1abe
lk234lksdfsdf1abe
e
5

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值