【发布时间】:2017-01-25 10:55:04
【问题描述】:
我正在尝试在 WHERE 子句中有两个条件的表达式上使用一些正则表达式。我要捕获的模式是 106 后跟任何数字,后跟必须是 3 或 4 的数字,即 106[0-9][3-4]
首先,我尝试了这个:
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND (ForestID REGEXP '106[0-9][3-4]')
这会产生如下错误,最好知道原因。
Msg 102, Level 15, State 1, Line 16
Incorrect syntax near 'REGEXP'.
接下来,我尝试了这个,它现在正在运行,但我不确定它是否在做我想要它做的事情。
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND (ForestID LIKE '106[0-9][3-4]')
会按照我上面描述的那样做吗?
【问题讨论】:
-
标记您正在使用的 dbms。 (REGEXP 和 LIKE 行为是特定于产品的。)
-
哪个数据库?请添加您遇到的错误。
-
两者都 - 完成:错误和 dbms。
-
SQL Server 不支持正则表达式
-
@DanielShillcock: patindex 不支持任何正则表达式——至少不支持the manual: "pattern 是一个字符表达式,包含要查找的序列。可以使用通配符;但是,% 字符必须在模式之前和之后(搜索第一个或最后一个字符时除外)。"
标签: sql sql-server regex