3

问题:从 STATION 查询首尾皆为元音(即 a、e、i、o 和 u)的 CITY 名称列表。您的结果不能包含重复项。

我找到了@Mureinik 编辑的答案,(谢谢!这很有帮助!)

SELECT DISTINCT CITY FROM STATION WHERE CITY RLIKE '^[aeiouAEIOU].*[aeiouAEIOU]$';

我很困惑,问题是询问他们的第一个和最后一个字符是 aeiou,为什么我不能只使用

CITY RLIKE '^[aeiouAEIOU][aeiouAEIOU]$'

但是,当我取出 . 和 *,它显示错误的答案。

为什么我们需要使用 . 和 * 在这个问题中?做 。和 * 总是一起使用?

还有一个问题:从STATION查询不以元音开头的CITY名称列表。您的结果不能包含重复项。

SELECT DISTINCT CITY FROM STATION WHERE CITY NOT RLIKE '^[aeiouAEIOU].*$'; 

为什么在第一个问题中使用了两次 [aeiouAEIOU],而在第二个问题中只使用了一次?

4

1 回答 1

1
CITY RLIKE '^[aeiouAEIOU][aeiouAEIOU]$'

这只会匹配恰好有两个字符(两个元音)的城市名称。

在正则表达式中,方括号中的一组字符[aeiouAEIOU]恰好匹配一个字符。

两个方括号集合之间没有任何内容,因此在匹配的字符串之间不能有任何字符。

于 2019-03-04T03:45:00.020 回答