首先想到的是使用由LIKE
分隔的一组OR
条件(如下所示)。
(p.string like '%1111111%'
or p.string like '%2222222%'
or p.string like '%3333333%'
or p.string like '%4444444%'
...)
可能的结果:
Phone
----------
761111111
3718888888
+214444444
但也许有人可以提出另一种 - 更优雅的方式来做到这一点?
P.S。
在我的情况下, Full-text-search
不是一个选项。
答案 0 :(得分:2)
更新:要查找定期数字,您可以使用此类功能。如果@text中的任何字符连续至少使用@min次,则返回1。
create function IsRecurring(@text varchar(255), @min int) returns int as
begin
declare @i int = len(@text) - @min + 1
declare @result int = 0
while @i > 0 begin
if replace(substring(@text, @i, @min), substring(@text, @i, 1), '') = '' begin
select @result = 1
break
end
select @i = @i - 1
end
return @result
end
使用示例:
select dbo.IsRecurring('84455552', 4)
如果任何字符连续至少使用4次,则返回1。
答案 1 :(得分:0)
执行以下操作:
select field_name
from table_name
where CONTAINS(field_name, '"1111111*" OR "2222222*" OR "3333333*"')
确保在使用此功能时安装了全文搜索功能。
参考here。