sql中比较一个字符串中是否含有另一个字符串中的一个字符

发布网友 发布时间:2022-04-21 09:35

我来回答

4个回答

热心网友 时间:2023-11-09 02:35

1、既然你要判断其中一个是否包含了另一个,那你条件肯定要给SQL,SQL才能帮你找到的,2、这个条件肯定是你要给出的。比如str1='1`2`3`4`5'str2='1`2`3`4'那你叫SQL判断的其中的话,可以:Select
CharIndex('5',str1)
--这里的“5”具体要代入什么值去判断,就要你给出来了。Select
CharIndex('2`3',str1)
--这类的SQL是可以帮你去判断的。不包含的话就返回0否则就返回第一个相同字符的位置,比如这个就返回3 给你写一个函数来操作:
Create
function
fSearch(@inStr
varchar(1000),@fndStr
varchar(1000),@doc
varchar(10))

returns
bit

as

begin

declare
@ii
int,@rStr
varchar(1000),@c
varchar(1000)

select
@rStr=@fndStr

while
len(@rStr)>0

begin
Select
@ii=Charindex(@doc,@rStr)

if
@ii=0
begin

return
0
end
else
begin

select
@c=substring(@rStr,1,@ii-1)

if
charIndex(@c,@inStr)>0
return
1

else

begin
select
@rStr=substring(@rStr,@ii+len(@doc),len(@rStr))

end
end

end

return
0

end
--参数:@inStr
待搜索字串,@fndStr
搜索字串,@doc
分隔符--
例:select
dbo.fSearch('1,2,3,4,5,6','3,6,5,8,2',',')
返回0-不匹配,返回1-匹配(@instr中有@fndStr内容)--可以用于表搜索,如:--
Select
*,dbo.fSearch(str,'3,6,5,8,2',',')
as
是否匹配 from
表名--
@fndStr和@doc两个参数就需要你自己提供了,@inStr可以是数据表里的某个待搜索字段名

热心网友 时间:2023-11-09 02:36

先建一张辅助表:
declare @a int
set @a=0
while @a<10000
begin
insert into nums select @a
set @a=@a+1
end
然后写一个函数:
alter function dbo.charindex_of(@str1 varchar(100) ,@str2 varchar(100))
returns int
as
begin
declare @a int
select @a=count(*) from (select subString(@str2,n,charindex('`',@str2+'`',n)-n) rn
from nums where n<len(@str2) and subString('`'+@str2,n,1)='`') a,
(select subString(@str1,n,charindex('`',@str1+'`',n)-n) rn
from nums where n<len(@str1) and subString('`'+@str1,n,1)='`') b
where a.rn=b.rn
return @a
end
然后就可以比较了
declare @str1 varchar(100) ,@str2 varchar(100)
set @str1='1`2`3`4`5'
set @str2='1`2`3`4'
select dbo.charindex_of(@str1,@str2)
返加的是匹配的个数,当然大于0就说明满足条件,如有疑问,可以HI我

热心网友 时间:2023-11-09 02:36

这个不太好实现吧,要是数据固定的话就好实现了,你参考下这两个函数
charindex()或patindex()

热心网友 时间:2023-11-09 02:37

select charindex('1234','12345')
为1存在,0为不存在
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com