首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL类似于模式匹配,当它应该返回值时返回空集

MySQL类似于模式匹配,当它应该返回值时返回空集
EN

Stack Overflow用户
提问于 2014-11-22 02:34:35
回答 2查看 950关注 0票数 3

我有一个如下所示的表(将真实数据替换为虚拟数据):

代码语言:javascript
复制
tableName 
+-----------+----------------+
| code      | description    |
+-----------+----------------+
| A         | text here      |
| b         | blah blah      |
| c         | sdfsdfsdfsdf   |
| d         | sdfsfkaljdaklj |
| e         | asdkjasdlkjasd |
| f         | adskljalkdj    |
| g         | asdjalkd       |
| h         | askdjavsd      |
+-----------+----------------+

我正在尝试执行以下命令:

代码语言:javascript
复制
SELECT * FROM tableName WHERE description LIKE '__[aeiou]%';

我期望这个select语句返回描述中第三个字符为a、e、i、o或u的表中的所有结果。

但是,关于查询,我得到了0的结果。我知道一个事实,与此模式相匹配的有效结果(第三个字符是a,e,i,o或u)存在于表中。

我的问题出什么问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-22 02:37:09

使用正则表达式而不是Server样式的LIKE模式:

代码语言:javascript
复制
SELECT *
FROM tableName
WHERE description REGEXP '^..[aeiou].*$';

编辑:

对于那些没有彻底阅读文档的人,文档中写道:

MySQL提供的其他类型的模式匹配使用扩展正则表达式。当您测试这种模式的匹配时,请使用REGEXP而不是REGEXP运算符(或者RLIKE,而不是RLIKE,这是同义词)。 下面的列表描述了扩展正则表达式的一些特性:

特性列表(如[] )在此列表中。LIKE的标准只有两个通配符,%_

票数 4
EN

Stack Overflow用户

发布于 2014-11-22 02:40:13

在MySQL中,'_‘字符不是扩展正则表达式类的一部分,不能作为扩展正则表达式类使用。使用RLIKE使用正则表达式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27073429

复制
相关文章

相似问题

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