我试图对表达式使用一些正则表达式,在表达式中,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]') 这会像我上面描述的那样吗?
发布于 2017-01-25 11:30:23
发布于 2017-01-25 11:51:57
您可以指定以下内容:
我想捕捉的模式是106,后面跟着任何数字,后面必须是3或4,即1060-9。
然后给出一个使用正则表达式的示例:
WHERE ForestID REGEXP '106[0-9][3-4]'正则表达式匹配字符串中任何位置的模式。因此,这将与'10603'匹配。它还将与'abc10694 def'相匹配。一般来说,正则表达式是这样的,而不仅仅是一个数据库的实现。
如果这是您想要的行为,那么相应的LIKE (在Server中)`是:
WHERE ForestID LIKE '%106[0-9][3-4]%'如果您只想要5位数的值,那么相应的正则表达式是:
WHERE ForestID REGEXP '^106[0-9][3-4]$'发布于 2017-01-25 12:11:20
试着在下面
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND ((ForestID LIKE '%106_3%' OR ForestID LIKE '%106_4%'))https://stackoverflow.com/questions/41849726
复制相似问题