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

roejwanj  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(134)

我有以下值

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},我现在所做的只是设置最小范围。
有没有解决的办法?

dxxyhpgq

dxxyhpgq1#

假设您要解释整个情况,最简单的方法可能是创建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中这样做,这是一种方法。

相关问题