首先想到的是使用一堆由 OR
分隔的 LIKE
条件(如下所示)。
(p.string like '%1111111%'
or p.string like '%2222222%'
or p.string like '%3333333%'
or p.string like '%4444444%'
...)
可能的结果:
Phone
----------
761111111
3718888888
+214444444
但也许有人可以建议另一种更优雅的方法来做到这一点?
附注
全文搜索
在我的情况下不是一个选项。
最佳答案
更新:要查找重复出现的数字,您可以使用这样的函数。如果@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。
关于sql - 在 SQL 中查找包含相同数字序列的字符串的最佳方法是什么? (假手机搜索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27122669/