Замените несколько операторов ИЛИ одним оператором IN или ANY - PullRequest
3 голосов
/ 19 февраля 2020

Я хотел бы запросить список городов, оканчивающихся на гласные, и я хотел бы, чтобы каждый город в списке был разным. Код, указанный ниже, работает нормально, но я бы хотел добиться того же, используя операторы IN или ANY. Я приложил изображение описания таблицы, с которой я работаю. Спасибо!

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';

Описание таблицы

Ответы [ 4 ]

0 голосов
/ 19 февраля 2020

Если вы хотите использовать in, вы можете:

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

Вы можете использовать lower(), если вам нужно обрабатывать и верхний регистр.

0 голосов
/ 19 февраля 2020

Использовать регулярное выражение

select DISTINCT 
City   FROM Station 
WHERE  regexp_like(city,'[aeiou]$')
0 голосов
/ 19 февраля 2020

Вы можете использовать Oracle REGEXP_LIKE здесь:

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

Шаблон регулярного выражения ^.*[aeiou]$ будет соответствовать любому названию города, оканчивающемуся на гласную. Третий параметр i, переданный REGEXP_LIKE, указывает Oracle выполнить сопоставление в режиме без учета регистра, в случае, если это имеет значение.

0 голосов
/ 19 февраля 2020

Вы можете использовать regexp_like

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

Демо

...