Angenommen, alle Städtenamen bestehen aus Kleinbuchstaben, könnten Sie etwa so vorgehen:
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) nimmt den Teilstring von city beginnend bei Position 1 und Länge 1 (d. h. nur der erste Buchstabe). substr(city, -1, 1) ist sehr ähnlich, nur die Position ist anders:-1 bedeutet erster Buchstabe vom Ende der Zeichenfolge - so erhalten Sie den letzten Buchstaben des Stadtnamens.
Wenn city kann im WHERE sowohl Groß- als auch Kleinbuchstaben enthalten -Klausel verwenden Sie lower(city) statt city .
BEARBEITEN :Auf vielfachen Wunsch hier ist, wie das Gleiche mit regulären Ausdrücken gemacht werden kann. Es hat jedoch keinen Sinn, hier einen regulären Ausdrucksansatz zu verwenden; Die Standard-String-Funktionen (wie SUBSTR) sind mit ziemlicher Sicherheit viel schneller als alles, was auf regulären Ausdrücken basiert.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u) bedeutet genau eines dieser Zeichen. ^ bedeutet Anker am Anfang des Strings und ähnlich $ am Ende der Zeichenfolge. Dazu muss der Städtename streng genommen mindestens zwei Buchstaben lang sein; Wenn Städtenamen mit einem Buchstaben möglich sind, können diese leicht geändert werden. (Der SUBSTR-Ansatz würde keine Änderungen erfordern.)
Das letzte Argument, 'i' , macht die Groß-/Kleinschreibung der Regexp-Übereinstimmung unempfindlich (nur für den Fall, dass dies erforderlich ist).