create function F_test6 (@str varchar(10)) returns varchar(1) as begin declare @i varchar(1) if charindex(@str,'020102030302')>0 set @i='1' else set @i='0' return @i end调用:(返回1存在,返回0不存在) declare @i int set @i=dbo.F_test6('0201') print @i ---------------------- 结果: 1 drop function F_test6
declare @c varchar(100) declare @i int declare @len int set @c = '020102030302' set @i = 1 set @len = len(@c)while not @i<>@len/4+1 begin if substring(@c,4*@i-3,4*@i)=匹配字段 begin print '匹配' return end set @i=@i+1 end print '不匹配'
用DIFFERENCE函数试试,根据返回的差来判断一下是否是按照四位一截进行的。
或者用PATINDEX 函数,把值拿出来判断一下,看看值取余4后是不是等于1,就行了。
create function F_test6 (@str varchar(10)) returns varchar(1) as begin declare @i varchar(1) if PATINDEX(@str,'020102030302') % 4 = 1 return 1 else return 0 end调用:(返回1存在,返回0不存在) declare @i int set @i=dbo.F_test6('0201') print @i ---------------------- 结果: 1 drop function F_test6
returns varchar(1)
as
begin
declare @i varchar(1)
if charindex(@str,'020102030302')>0
set @i='1'
else
set @i='0'
return @i
end调用:(返回1存在,返回0不存在)
declare @i int
set @i=dbo.F_test6('0201')
print @i
----------------------
结果:
1
drop function F_test6
declare @i int
declare @len int
set @c = '020102030302'
set @i = 1
set @len = len(@c)while not @i<>@len/4+1
begin
if substring(@c,4*@i-3,4*@i)=匹配字段
begin
print '匹配'
return
end
set @i=@i+1
end
print '不匹配'
returns varchar(1)
as
begin
declare @i varchar(1)
if PATINDEX(@str,'020102030302') % 4 = 1
return 1
else
return 0
end调用:(返回1存在,返回0不存在)
declare @i int
set @i=dbo.F_test6('0201')
print @i
----------------------
结果:
1
drop function F_test6