【SQL】查找给定字符串中包含已知子字符串

小编:啊南 208阅读 2020.11.30

在平时数据处理中,通常给定多个已知子项目,验证给定字符串中包含多少个子项目。

运用sql server函数处理。

CREATE Function [dbo].[ConvertSyntax](@paraStr nvarchar(2000))

returns varchar(300)

as

begin

declare @result varchar(300)

declare @findStr varchar(1024)

declare @tmpStr varchar(1024)

declare @subStr varchar(16)

declare @idx int

set @findStr='简单句,主从句,并列句,复合句,主语从句,表语从句,宾语从句,同位语从句,定语从句,限制性定语从句,非限制性定语从句,状语从句,结果状语从句,原因状语从句,让步状语从句,条件状语从句,地点状语从句,时间状语从句,目的状语从句,方式状语从句,比较状语从句,形式主语,存在句,关系代词,非谓语动词,同位语,强调句,虚拟语气,分词短语,祈使句,形式宾语,形式主语,同位语,被动语态,宾语补语,原因状语,后置定语,分词短语,伴随状语,倒装句,省略句,不定式,动名词,独立主格,分词独立主格'

set @tmpStr=@findStr;

set @result=''

while len(@tmpStr)>0

begin

set @idx=CHARINDEX(',',@tmpStr)

if @idx>0

begin

set @subStr=SUBSTRING(@tmpStr,1,@idx-1)

set @tmpStr=SUBSTRING(@tmpStr,@idx+1,LEN(@tmpStr))

end

else

begin

set @subStr=@tmpSt

end

if CHARINDEX(@subStr,@paraStr) >0

begin

set @result=@result+','+@subSt

end

end

return @result

end

运行: select dbo.ConvertSyntax('该句为复合句。用了so…that…句型;that wind easily blew away the top soil是that引导的结果状语从句。')

返回结果:,复合句,状语从句,结果状语从句

关联标签: