Ако приемем, че всички имена на градове са малки букви, можете да направите нещо подобно:
select city
from station
where substr(city, 1, 1) in ('a', 'e', 'i', 'o', 'u')
and substr(city, -1, 1) in ('a', 'e', 'i', 'o', 'u')
substr(city, 1, 1)
взема подниза на city
започвайки от позиция 1 и с дължина 1 (което означава, само първата буква). substr(city, -1, 1)
е много подобен, само позицията е различна:-1
означава първа буква открай от низа - така че това ще ви даде последната буква от името на града.
Ако city
може да има както главни, така и малки букви в WHERE
клаузата използва lower(city)
вместо city
.
РЕДАКТИРАНЕ :По масово искане, ето как може да се направи същото с регулярни изрази. Тук обаче няма смисъл да се използва подход с регулярен израз; стандартните низови функции (като SUBSTR) са почти сигурни, че са много по-бързи от всичко, базирано на регулярни изрази.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u)
означава точно един от тези знаци. ^
означава закрепване в началото на низа и по подобен начин $
в края на низа. Строго погледнато, това изисква името на града да е дълго поне две букви; ако са възможни еднобуквени имена на градове, това може лесно да се промени. (Подходът SUBSTR не изисква промени.)
Последният аргумент, 'i'
, прави съвпадението на regexp нечувствително към главни и малки букви (само в случай, че е необходимо).