Za předpokladu, že všechny názvy měst jsou všechna malá písmena, můžete udělat něco takového:
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) přebírá podřetězec city počínaje pozicí 1 a délky 1 (tzn. pouze první písmeno). substr(city, -1, 1) je velmi podobný, jen pozice je jiná:-1 znamená první písmeno od konce řetězce – tím získáte poslední písmeno názvu města.
Pokud city může mít velká i malá písmena v WHERE klauzuli použijte lower(city) místo city .
UPRAVIT :Na základě populárního požadavku je zde uvedeno, jak lze totéž udělat s regulárními výrazy. Zde však nemá smysl používat regulární výraz; standardní řetězcové funkce (jako SUBSTR) jsou téměř jistě mnohem rychlejší než cokoli založené na regulárních výrazech.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u) znamená přesně jeden z těchto znaků. ^ znamená kotva na začátku řetězce a podobně $ na konci řetězce. Přísně vzato to vyžaduje, aby jméno města bylo dlouhé alespoň dvě písmena; pokud jsou možné jednopísmenné názvy měst, lze je snadno upravit. (Přístup SUBSTR by nevyžadoval žádné změny.)
Poslední argument, 'i' , nerozlišuje při porovnávání regulárních výrazů velká a malá písmena (jen pro případ, že je to potřeba).