用单个 IN 或 ANY 运算符替换多个 OR 运算符

Replace multiple OR operators with a single IN or ANY operator

我想查询以元音结尾的城市列表,我希望列表中的每个城市都是不同的。下面提到的代码工作正常,但我想使用 IN 或 ANY operators.I 来实现同样的事情,并附上了我正在使用的 table 的描述图片。谢谢!

SELECT DISTINCT City FROM Station
WHERE City LIKE '%a' 
OR City LIKE '%e'
OR City LIKE '%i'
OR City LIKE '%o'
OR City LIKE '%u';

Table description

您可以使用regexp_like

SELECT distinct CITY
  FROM station
 WHERE regexp_like(CITY, '[aeiou]$', 'i');

Demo

使用正则表达式

select DISTINCT 
City   FROM Station 
WHERE  regexp_like(city,'[aeiou]$')

您可以在此处使用 Oracle 的 REGEXP_LIKE

SELECT DISTINCT City
FROM Station
WHERE REGEXP_LIKE(City, '^.*[aeiou]$', 'i');

正则表达式模式 ^.*[aeiou]$ 将匹配任何以元音结尾的城市名称。传递给 REGEXP_LIKE 的第三个 i 参数告诉 Oracle 在不区分大小写的模式下进行匹配,以防万一。

如果你想使用in,你可以:

where substr(city, -1) in ('a', 'e', 'i', 'o', 'u')

如果您还需要处理大写字母,可以使用lower()