什么是正则表达式,重复相同的数字5次或多次,例如11111、22222、33333、44444。我使用的是SQL服务器,例如查询
答案 0 :(得分:2)
您可以尝试以下方法:
(\d)\1{4,}
它是这样工作的:
的解释1st Capturing Group (\d)
\d matches a digit (equal to [0-9])
\1{4,} matches the same text as most recently matched by the 1st capturing group
{4,} Quantifier — Matches between 4 and unlimited times, as many times as
possible, giving back as needed (greedy)
Global pattern flags
g modifier: global. All matches (don't return after first match)
m modifier: multi line. Causes ^ and $ to match the begin/end of each line
(not only begin/end of string)
答案 1 :(得分:2)
SQL Server中不会有正则表达式来完成您要执行的操作。您可以参考这篇文章,其中概述了如何在带有LIKE的T-SQL中使用正则表达式:https://www.mssqltips.com/sqlservertutorial/9106/using-regular-expressions-with-tsql-from-beginner-to-advanced/
要在SQL Server 2008+中重复字符,可以使用REPLICATE。
REPLICATE:将字符串值重复指定的次数。
根据先前的评论,您可能正在进行某种电话号码评估。这是一个示例,可以帮助您完成以下任务:
DECLARE @PhoneNumbers TABLE
(
[HomePhone] NVARCHAR(500)
);
INSERT INTO @PhoneNumbers (
[HomePhone]
)
VALUES ( N'123546789' )
, ( N'111111111' )
, ( N'555555555' )
, ( N'222222222' )
, ( N'231111123' )
, ( N'897777712' )
, ( N'010101010' )
, ( N'333344444' )
, ( N'123546789' );
SELECT *
FROM @PhoneNumbers
WHERE [HomePhone] LIKE '%' + REPLICATE('1', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('2', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('3', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('4', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('5', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('6', 5) + '%'
OR [HomePhone] LIKE '%' + REPLICATE('7', 5) + '%';
在这种情况下使用REPLICATE进行思考可能不会为您带来任何好处,因为键入REPLICATE('1',5)与将其键入为'11111'并没有太大区别。但是应该让您对重复字符的功能有所了解。
您曾经提到过,where子句中的重复项不是一个选项。如果最终您要评估的是HomePhone的整个值是否都在重复,则可以执行以下操作:
SELECT *
FROM @PhoneNumbers
WHERE [HomePhone] = REPLICATE(LEFT([HomePhone],1), LEN([HomePhone]))
这里发生的所有事情就是采用最左边的字符HomehPhone,复制值的长度并查看其是否匹配。