首页 > 解决方案 > MySQL LIKE 运算符未按预期进行模式匹配

问题描述

我得到了一个关系表STATION,如下所示:

+------+----------------+-------+-------+--------+
| ID   | CITY           | STATE | LAT_N | LONG_W |
+------+----------------+-------+-------+--------+
|  794 | Kissee Mills   | MO    |   140 |     73 |
|  824 | Loma Mar       | CA    |    49 |    131 |
|  603 | Sandy Hook     | CT    |    72 |    148 |
|  478 | Tipton         | IN    |    34 |     98 |
|  619 | Arlington      | CO    |    75 |     93 |
|  711 | Turner         | AR    |    50 |    101 |
|  839 | Slidell        | LA    |    85 |    152 |
|  342 | Chignik Lagoon | AK    |   103 |    153 |
+------+----------------+-------+-------+--------+

我需要执行以下查询:

从 STATION 查询以元音开头的 CITY 名称列表(即 a、e、i、o 或 u)。

我在 Ubuntu 操作系统上使用 MySQL 5.7 版。

现在,这是我的尝试:

SELECT CITY
FROM STATION
WHERE LOWER(CITY) LIKE '[aeiou]%';

但这不会产生所需的结果。我得到一个空集作为输出。但是,这工作得很好:

SELECT CITY
FROM STATION
WHERE LOWER(CITY) REGEXP '^[aeiou]';

我想知道LIKE运算符的第一种方法有什么问题,知道吗?我是 SQL 新手,所以如果我做了一些愚蠢的事情,请原谅我。

感谢您的时间。

标签: mysqlsqlregexsql-like

解决方案


LIKE在 MySQL 中不支持通配符。你可以用正则表达式做类似的事情:

SELECT CITY
FROM STATION
WHERE LOWER(CITY) REGEXP '^[aeiou]';

推荐阅读