Zakładając, że wszystkie nazwy miast są małymi literami, możesz zrobić coś takiego:
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) pobiera podciąg city zaczynając od pozycji 1 i długości 1 (czyli tylko pierwszej litery). substr(city, -1, 1) jest bardzo podobny, tylko pozycja jest inna:-1 oznacza pierwszą literę od koniec ciągu - więc to da ci ostatnią literę nazwy miasta.
Jeśli city może mieć zarówno duże, jak i małe litery, w WHERE klauzula użyj lower(city) zamiast city .
EDYTUJ :Na popularne żądanie, oto jak to samo można zrobić z wyrażeniami regularnymi. Nie ma jednak sensu używać tutaj podejścia opartego na wyrażeniach regularnych; standardowe funkcje łańcuchowe (takie jak SUBSTR) są prawie pewne, że są znacznie szybsze niż cokolwiek oparte na wyrażeniach regularnych.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u) oznacza dokładnie jedną z tych postaci. ^ oznacza kotwicę na początku ciągu i podobnie $ na końcu ciągu. Ściśle mówiąc, wymaga to, aby nazwa miasta składała się z co najmniej dwóch liter; jeśli możliwe są jednoliterowe nazwy miast, można je łatwo zmienić. (Podejście SUBSTR nie wymagałoby żadnych zmian.)
Ostatni argument, 'i' , sprawia, że dopasowujące wyrażenie regularne nie uwzględnia wielkości liter (tylko w przypadku, gdy jest to konieczne).