mysql - 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 新手,所以如果我做了一些愚蠢的事情,请原谅我。
感谢您的时间。
解决方案
LIKE
在 MySQL 中不支持通配符。你可以用正则表达式做类似的事情:
SELECT CITY
FROM STATION
WHERE LOWER(CITY) REGEXP '^[aeiou]';
推荐阅读
- go - Golang 无法使用 math.Float64frombits 将 []byte("1575455669.4") 转换为 float64
- c# - 如何在 ASP.Net Core 中强制使 JWT 令牌过期?
- javascript - .split + regex 在网络浏览器中不起作用
- spring-boot - 每个 url 模式的身份验证提供程序 - Spring Boot
- vue.js - 即使我有错误Vuejs,提交表单后模态也会关闭
- java - TaskStackBuilder 与正常的 startActivity 一次又一次
- .htaccess - 当文件存在时,Htaccess + mod_rewrite 不起作用
- python - 在 Python 中使用 tkinter 更改字符输出的宽度
- java - 如何将注释值发送到 @Before 方法?
- angular - 打字稿:将字符串 [] 映射到 [字符串,字符串]