我有一个如下结构的表(真实数据替换为虚拟数据):
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。
但是,对于about查询,我得到0结果。我知道这个模式中存在与该模式匹配的有效结果(第3个字符是a,e,i,o或u)。
我的查询有什么问题?
答案 0 :(得分:3)
使用正则表达式而不是SQL Server样式LIKE
模式:
SELECT *
FROM tableName
WHERE description REGEXP '^..[aeiou].*$';
编辑:
对于那些没有彻底阅读文档的人,文档说:
MySQL提供的另一种模式匹配使用扩展 常用表达。当您测试此类型的匹配项时 模式,使用REGEXP和NOT REGEXP运算符(或RLIKE和NOT RLIKE,是同义词。
以下列表描述了扩展常规的一些特征 表达式:
此列表中包含[
和]
等功能列表。 LIKE
的标准只有两个通配符,%
和_
。
答案 1 :(得分:1)
在MySQL中,' _' character不是扩展正则表达式类的一部分,不能这样使用。使用RLIKE来使用正则表达式