首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL查询中使用'LIKE‘和'REGEXP’

在SQL查询中使用'LIKE‘和'REGEXP’
EN

Stack Overflow用户
提问于 2017-01-25 10:55:04
回答 3查看 11.5K关注 0票数 3

我试图对表达式使用一些正则表达式,在表达式中,WHERE子句有两个条件。我想捕捉的模式是106,后面跟着任何数字,后面必须是3或4,即106[0-9][3-4]

首先,我尝试了这个:

代码语言:javascript
复制
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND (ForestID REGEXP '106[0-9][3-4]') 

这产生了一个错误,如下所示,很好地知道原因。

代码语言:javascript
复制
Msg 102, Level 15, State 1, Line 16
Incorrect syntax near 'REGEXP'.

接下来,我尝试了这个方法,它现在正在运行,但我不确定它是否做了我希望它做的事情。

代码语言:javascript
复制
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND (ForestID LIKE '106[0-9][3-4]') 

这会像我上面描述的那样吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-25 11:30:23

您不需要与托管代码交互,因为您可以使用喜欢

代码语言:javascript
复制
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND ForestID LIKE '106[0-9][3-4]')

为了说明这一点: Server不支持没有托管代码的正则表达式。根据情况的不同,LIKE操作符可以是一个选项,但它缺乏正则表达式提供的灵活性。

如果您想拥有完整的正则表达式功能,请尝试

票数 4
EN

Stack Overflow用户

发布于 2017-01-25 11:51:57

您可以指定以下内容:

我想捕捉的模式是106,后面跟着任何数字,后面必须是3或4,即1060-9。

然后给出一个使用正则表达式的示例:

代码语言:javascript
复制
WHERE ForestID REGEXP '106[0-9][3-4]'

正则表达式匹配字符串中任何位置的模式。因此,这将与'10603'匹配。它还将与'abc10694 def'相匹配。一般来说,正则表达式是这样的,而不仅仅是一个数据库的实现。

如果这是您想要的行为,那么相应的LIKE (在Server中)`是:

代码语言:javascript
复制
WHERE ForestID LIKE '%106[0-9][3-4]%'

如果您只想要5位数的值,那么相应的正则表达式是:

代码语言:javascript
复制
WHERE ForestID REGEXP '^106[0-9][3-4]$'
票数 5
EN

Stack Overflow用户

发布于 2017-01-25 12:11:20

试着在下面

代码语言:javascript
复制
SELECT DISTINCT Loggers
FROM [alo].[Forests] C
WHERE (R.LogSU = 3)
AND ((ForestID LIKE '%106_3%' OR ForestID LIKE '%106_4%'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41849726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档