Aad*_*ore 0 mysql sql string where-clause sql-like
我正在解决来自 Hackerrank 的 SQL 问题。我必须进行查询,以便它为我提供所有以 a、e、i、o 或 u 开头的城市名称。我正在使用 Like 运算符,但仍然是错误的答案。
这是问题链接
这是我的解决方案-
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '[AEIOU]%'
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?
LIKE不支持该部分。您需要一个正则表达式匹配:
SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[AEIOU]'
Run Code Online (Sandbox Code Playgroud)
在正则表达式中,^代表字符串的开头,方括号定义了一个自定义字符类(意思是第一个字符必须属于那个列表)。
另一方面,如果您要使用LIKE,则需要多个条件,这会使代码更长(并且可能效率更低):
WHERE
CITY LIKE 'A%'
OR CITY LIKE 'E%'
OR CITY LIKE 'I%'
OR CITY LIKE 'O%'
OR CITY LIKE 'U%'
Run Code Online (Sandbox Code Playgroud)