使用正则表达式在SQL查询中定义范围



我有以下值

ABCD_AB_1234
ABCD_ABC_2345
ABCD_ABCD_5678

和匹配它们的正则表达式

ABCD_[A-Z]{2-4}_[0-9]{4}

现在我希望将该正则表达式转换为SQL查询,以便我可以从数据库中获取这些记录。

现在我有下面的where子句

where [columnName] like 'ABCD_[A-Z][A-Z]%[_][0-9][0-9][0-9][0-9]%'

问题是我不能在SQL查询中定义一个范围,就像我在正则表达式中所做的那样,比如{2-4},我现在所做的只是设置最小范围。

有解决办法吗?

假设你是在解释全貌,最简单的方法可能是创建3个条件来涵盖你的场景,例如

where [columnName] like 'ABCD_[A-Z][A-Z][_][0-9][0-9][0-9][0-9]%'
or [columnName] like 'ABCD_[A-Z][A-Z][A-Z][_][0-9][0-9][0-9][0-9]%'
or [columnName] like 'ABCD_[A-Z][A-Z][A-Z][A-Z][_][0-9][0-9][0-9][0-9]%'

这不是最优的,但是SQL Server没有任何正则表达式支持,所以如果你必须在SQL中这样做,这是一种方法。

最新更新