5

我在一个充满正则表达式的表中有一个列。

我的代码中有一个字符串,我想找出该列中的哪些正则表达式与该字符串匹配并返回这些行。

除了拉取每一行并匹配正则表达式(这很昂贵,检查单个页面加载的潜在数千条记录)之外,有没有一种方法可以在 SQL 中执行此操作,而不是使用一个(或几个)查询?

示例输入:W12ABC

示例列数据

1   ^[W11][\w]+$  
2   ^[W12][\w]+$  
3   ^[W13][\w]+$ 
4   ^[W1][\w]+[A][\w]+$  
5   ^[W1][\w]+[B][\w]+$  
6   ^[W1][\w]+[C][\w]+$  

应该返回第 2 行和第 4 行。

4

2 回答 2

1

T-SQL 不提供此功能,但您可以通过使用 .NET 正则表达式类编写 CLR 函数在 SQL Server 中启用它。这里有一篇很好的文章解释了如何做到这一点。

于 2012-07-24T21:00:16.680 回答
1

如果您对通配符持开放态度,则可以存储适用于 LIKE 语法的模式:“W12%”或“W%ABC”。您的查询将如下所示:

SELECT * FROM Table Where 'W12ABC' LIKE 列

于 2012-07-25T03:05:51.407 回答