查询中的正则表达式

问题描述 投票:0回答:1

抱歉,但没有找到如何在 T-SQL 查询中使用正则表达式(或类似表达式)的运气。 我有一列 NVARCHAR(512),我需要搜索该列以查看它是否包含值 ABC 后跟 10 位数字。 所以我需要能够找到该字段是否有“ABC1234567890”。 我知道我可以这样做: WHERE Column1 LIKE '%ABC[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0 -9][0-9][0-9]%' 这将找到包含 ABC + 10 位数字的列。 我必须对大约 12 种不同的变体执行此操作,因此这似乎不是最有效的方法。 看来我应该能够执行类似 WHERE Column1 LIKE '%ABC[接下来的十位数字是数字]" 的操作,而不是复制/粘贴 [0-9] 十次。

regex t-sql
1个回答
0
投票

几年后我们应该能够使用

REGEXP_LIKE
并做类似的事情

WHERE REGEXP_LIKE(Column1, 'ABC[0-9]{10}')

如果您只想匹配 0-9 或

WHERE REGEXP_LIKE(Column1, 'ABC\d{10}');

匹配任何 Unicode 数字

但这目前只是 Azure 中的预览功能。

目前,一种避免复制和粘贴并更容易查看重复次数的方法是

WHERE Column1  COLLATE Latin1_General_BIN LIKE CONCAT('%ABC',REPLICATE('[0-9]',10),'%')
© www.soinside.com 2019 - 2024. All rights reserved.