我有一个如下所示的表(将真实数据替换为虚拟数据):
tableName
+-----------+----------------+
| code | description |
+-----------+----------------+
| A | text here |
| b | blah blah |
| c | sdfsdfsdfsdf |
| d | sdfsfkaljdaklj |
| e | asdkjasdlkjasd |
| f | adskljalkdj |
| g | asdjalkd |
| h | askdjavsd |
+-----------+----------------+我正在尝试执行以下命令:
SELECT * FROM tableName WHERE description LIKE '__[aeiou]%';我期望这个select语句返回描述中第三个字符为a、e、i、o或u的表中的所有结果。
但是,关于查询,我得到了0的结果。我知道一个事实,与此模式相匹配的有效结果(第三个字符是a,e,i,o或u)存在于表中。
我的问题出什么问题了?
发布于 2014-11-22 02:37:09
使用正则表达式而不是Server样式的LIKE模式:
SELECT *
FROM tableName
WHERE description REGEXP '^..[aeiou].*$';编辑:
对于那些没有彻底阅读文档的人,文档中写道:
MySQL提供的其他类型的模式匹配使用扩展正则表达式。当您测试这种模式的匹配时,请使用REGEXP而不是REGEXP运算符(或者RLIKE,而不是RLIKE,这是同义词)。 下面的列表描述了扩展正则表达式的一些特性:
特性列表(如[和] )在此列表中。LIKE的标准只有两个通配符,%和_。
发布于 2014-11-22 02:40:13
在MySQL中,'_‘字符不是扩展正则表达式类的一部分,不能作为扩展正则表达式类使用。使用RLIKE使用正则表达式
https://stackoverflow.com/questions/27073429
复制相似问题