Dengan asumsi semua nama kota semua huruf kecil, Anda bisa melakukan sesuatu seperti ini:
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) mengambil substring dari city mulai dari posisi 1 dan panjang 1 (artinya, hanya huruf pertama). substr(city, -1, 1) sangat mirip, hanya posisinya yang berbeda:-1 berarti huruf pertama dari akhir string - jadi ini akan memberi Anda huruf terakhir dari nama kota.
Jika city mungkin memiliki huruf besar dan kecil, di WHERE klausa gunakan lower(city) bukannya city .
EDIT :Dengan permintaan populer, berikut adalah bagaimana hal yang sama dapat dilakukan dengan ekspresi reguler. Tidak ada gunanya menggunakan pendekatan ekspresi reguler di sini; fungsi string standar (seperti SUBSTR) hampir pasti jauh lebih cepat daripada apa pun berdasarkan ekspresi reguler.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u) berarti tepat salah satu dari karakter tersebut. ^ berarti jangkar di awal string, dan juga $ di ujung tali. Sebenarnya, ini membutuhkan nama kota setidaknya dua huruf; jika nama kota satu huruf memungkinkan, ini dapat dimodifikasi dengan mudah. (Pendekatan SUBSTR tidak memerlukan perubahan.)
Argumen terakhir, 'i' , membuat pencocokan huruf besar-kecil dengan regexp tidak peka (untuk berjaga-jaga jika diperlukan).