Mysql 理解为什么在开始和结束时使用元音查询城市不起作用

Mysql 理解为什么在开始和结束时使用元音查询城市不起作用,mysql,sql-like,Mysql,Sql Like,任务: 从表中查询第一个和最后一个字符都是元音的名称列表[重复] 我想从表STATION(id、CITY、longitude、latitude)中查询城市名称列表,它们的第一个和最后一个字符都是元音。结果不能包含重复项 我的问题是: SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '[aeiou]%' AND '%[aeiou]' 我找到了这个解决方案: Select distinct city from station Where r

任务:

从表中查询第一个和最后一个字符都是元音的名称列表[重复]

我想从表STATION(id、CITY、longitude、latitude)中查询城市名称列表,它们的第一个和最后一个字符都是元音。结果不能包含重复项

我的问题是:

SELECT DISTINCT CITY 
FROM STATION 
WHERE CITY LIKE '[aeiou]%' AND '%[aeiou]'
我找到了这个解决方案:

Select distinct city 
from station
Where regexp_like(city, '^[aeiou].*[aeiou]$','i');

为什么我的查询不起作用?

'[aeiou]'
是一个正则字符类,它不受类似于的运算符
的支持。因此,您的查询不会执行您期望的操作:它实际上搜索以
'[aeiou]'
开头的普通字符串(即使是这样,您也需要重复表达式
类似于城市的…
两次:
类似于城市的…并且…
也不会执行您期望的操作)

您找到的解决方案将
regexp_like()
与以下正则表达式一起使用:
^[aeiou].[aeiou]$
,这意味着:

^         beginning of the string
[aeiou]   one of the characters in the list
.*        a sequence of 0 to N characters
[aeiou]   one of the characters in the list
$         end of the string
选项
'i'
使搜索不区分大小写

这是可行的,但需要MySQL 8.0。如果运行较早的版本,请考虑使用<代码> ReXEP 条件代替:

CITY REGEXP '^[aeiou].*[aeiou]$'

因为你用like,他们用regexp\u like?你读过关于这些操作员的文档了吗?提供输入和输出示例将非常有助于调查……在and之后,你似乎错过了一个类似城市的
!?根据答案,[]至少是以“a”开头的搜索,也是不好的。谢谢你的评论。我复制粘贴了该查询的旧版本-当然它必须是城市的两倍。。。我的错。至于[aeiou]是一个正则字符类-我在这里发现它的括号也与LIKE一起使用-我缺少什么?示例从客户中选择*,其中城市为“[bsp]%”;