少了个S declare @s varchar(100) set @s='中国工商银行' if parindex('%工%行%',@s)>0 or parindex('%工%行%',reverse(@s))>0 print 'Y' else print 'N' OR: declare @s varchar(100) set @s='中国工商银行' if parindex('%工%行%',@s)>0 or parindex(reverse('%工%行%'),@s)>0 print 'Y' else print 'N'
parindex?找不到两个字符串都是用参数输入的,不是写死的。
declare @s varchar(100) set @s='中国工商银行' if patindex('%工%行%',@s)>0 or patindex('%工%行%',reverse(@s))>0 print 'Y' else print 'N'
这个虽然不是函数,给你参考一下 declare @a varchar(100),@b varchar(100) declare @temp char(2) declare @len integer,@i integer,@m integer set @a='中国工商银行' set @b='工行' set @i=1 set @m=0 set @len=len(@b) while @i<=@len begin set @temp=substring(@b,@i,1) if ascii(@temp)>128 and charindex(@temp,@a)>0 begin set @m=@m+1 if @m=2 begin print 'YES' break end end set @i=@i+1 end
--看看这个,适应你的要求。 declare @s varchar(100),@i int,@str varchar(2000),@s1 varchar(20) set @str='' set @i=1 set @s1='工商行' set @s='中国工商银行'
while @i<=len(@s1) begin set @str=@str+'%'+substring(@s1,@i,1) set @i=@i+1 end select @str=substring(@str,2,8000) if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0 print '有' else print '无'--结果 有
可以把上面我写的这个放到一个存储过程里,把@s和@s1作为输入的参数就行了。 另外设个输出参数或用return返回也可以。 如下: create procedure test (@s varchar(100),@s1 varchar(20),@out varchar(10) output) as declare @i int,@str varchar(2000) set @str='' set @i=1 --set @s1='工商行' --set @s='中国工商银行'
while @i<=len(@s1) begin set @str=@str+'%'+substring(@s1,@i,1) set @i=@i+1 end select @str=substring(@str,2,8000)if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0 --print '有' set @out='yes' else --print '无' set @out='no'
----调用 declare @s varchar(100),@s1 varchar(20),@out varchar(10) set @s1='工商行' set @s='中国工商银行' exec test @s,@s1,@out outputprint @out
函数 CREATE function Valid(@a varchar(100),@b varchar(100)) returns char(3) as begin declare @temp char(2) declare @len integer,@i integer,@m integer declare @flag bit set @flag=0 set @i=1 set @m=0 set @len=len(@b) while @i<=@len begin set @temp=substring(@b,@i,1) if ascii(@temp)>128 and charindex(@temp,@a)>0 begin set @m=@m+1 if @m=2 return 'YES' end set @i=@i+1 end return 'NO' end调用: select dbo.valid('中国工商银行','工行')
declare @s varchar(100)
set @s='中国工商银行'
if parindex('%工%行%',@s)>0 or parindex('%工%行%',reverse(@s))>0
print 'Y'
else
print 'N'
OR:
declare @s varchar(100)
set @s='中国工商银行'
if parindex('%工%行%',@s)>0 or parindex(reverse('%工%行%'),@s)>0
print 'Y'
else
print 'N'
set @s='中国工商银行'
if patindex('%工%行%',@s)>0 or patindex('%工%行%',reverse(@s))>0
print 'Y'
else
print 'N'
declare @a varchar(100),@b varchar(100)
declare @temp char(2)
declare @len integer,@i integer,@m integer
set @a='中国工商银行'
set @b='工行'
set @i=1
set @m=0
set @len=len(@b)
while @i<=@len
begin
set @temp=substring(@b,@i,1)
if ascii(@temp)>128 and charindex(@temp,@a)>0
begin
set @m=@m+1
if @m=2
begin
print 'YES'
break
end
end
set @i=@i+1
end
declare @s varchar(100),@i int,@str varchar(2000),@s1 varchar(20)
set @str=''
set @i=1
set @s1='工商行'
set @s='中国工商银行'
while @i<=len(@s1)
begin
set @str=@str+'%'+substring(@s1,@i,1)
set @i=@i+1
end
select @str=substring(@str,2,8000)
if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0
print '有'
else
print '无'--结果
有
另外设个输出参数或用return返回也可以。
如下:
create procedure test (@s varchar(100),@s1 varchar(20),@out varchar(10) output)
as
declare @i int,@str varchar(2000)
set @str=''
set @i=1
--set @s1='工商行'
--set @s='中国工商银行'
while @i<=len(@s1)
begin
set @str=@str+'%'+substring(@s1,@i,1)
set @i=@i+1
end
select @str=substring(@str,2,8000)if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0
--print '有'
set @out='yes'
else
--print '无'
set @out='no'
----调用
declare @s varchar(100),@s1 varchar(20),@out varchar(10)
set @s1='工商行'
set @s='中国工商银行'
exec test @s,@s1,@out outputprint @out
CREATE function Valid(@a varchar(100),@b varchar(100)) returns char(3)
as
begin
declare @temp char(2)
declare @len integer,@i integer,@m integer
declare @flag bit
set @flag=0
set @i=1
set @m=0
set @len=len(@b)
while @i<=@len
begin
set @temp=substring(@b,@i,1)
if ascii(@temp)>128 and charindex(@temp,@a)>0
begin
set @m=@m+1
if @m=2
return 'YES'
end
set @i=@i+1
end
return 'NO'
end调用:
select dbo.valid('中国工商银行','工行')