Sql server 什么是重复相同数字5次或以上的正则表达式,例如11111、22222、33333、44444

Sql server 什么是重复相同数字5次或以上的正则表达式,例如11111、22222、33333、44444,sql-server,regex,Sql Server,Regex,什么是重复相同数字5次或更多次的正则表达式,例如11111、22222、33333、44444。我正在使用类似SQL server的查询您可以尝试以下操作: (\d)\1{4,} 这就是它的工作原理: 这是我的解释 SQL Server中不会有一个正则表达式来完成您所追求的目标。您可以参考这篇文章,它提供了在T-SQL中使用正则表达式的详细概述,如下所示: 对于SQL Server 2008+中的重复字符,可以使用REPLICATE :将字符串值重复指定的次数 根据之前的评论,您可能正在进行

什么是重复相同数字5次或更多次的正则表达式,例如11111、22222、33333、44444。我正在使用类似SQL server的查询

您可以尝试以下操作:

(\d)\1{4,}
这就是它的工作原理:

这是我的解释


SQL Server中不会有一个正则表达式来完成您所追求的目标。您可以参考这篇文章,它提供了在T-SQL中使用正则表达式的详细概述,如下所示:

对于SQL Server 2008+中的重复字符,可以使用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,复制值的长度并查看它是否匹配。

如果您指定了所使用的语言,可能会有所帮助。Regex风格不是通用的。我在sql server中使用它没有尝试,没有发布任何查询或示例数据,没有解释目标,没有展示任何努力来调查对Regex的tsql支持(这是有限的)。@chandreshpatel请为您的问题添加更多细节,包括您如何在sql server中使用Regex。我就是这样使用它的。从测试中选择前5名homephone,其中homephone类似“%[(\d)\1{4,}]%”是的,但我不想重复这样的操作,这就是我需要使用的原因Regex@chandreshpatel不会有一个适合你正在努力实现的目标。sql server的Regex是有限的,您可以检查一下:但它不会具体解决您需要什么。最接近的方法是将where子句替换为“where[HomePhone]=REPLICATE(LEFT([HomePhone],1),LEN([HomePhone])”,这是检查整个HomePhone是否重复的一行代码。我会更新我的答案。
    SELECT *
    FROM   @PhoneNumbers
    WHERE [HomePhone] = REPLICATE(LEFT([HomePhone],1), LEN([HomePhone]))