En supposant que tous les noms de ville sont tous en lettres minuscules, vous pourriez faire quelque chose comme ceci :
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)
prend la sous-chaîne de city
commençant à la position 1 et de longueur 1 (c'est-à-dire juste la première lettre). substr(city, -1, 1)
est très similaire, seule la position est différente :-1
signifie la première lettre de la fin de la chaîne - cela vous donnera donc la dernière lettre du nom de la ville.
Si city
peut avoir des lettres majuscules et minuscules, dans WHERE
clause utiliser lower(city)
au lieu de city
.
MODIFIER :À la demande générale, voici comment la même chose peut être faite avec des expressions régulières. Il n'y a cependant aucun intérêt à utiliser une approche d'expression régulière ici; les fonctions de chaîne standard (comme SUBSTR) sont presque certaines d'être beaucoup plus rapides que tout ce qui est basé sur des expressions régulières.
....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')
(a|e|i|o|u)
signifie exactement un de ces caractères. ^
signifie ancre au début de la chaîne, et de même $
en bout de chaîne. À proprement parler, cela nécessite que le nom de la ville contienne au moins deux lettres; si les noms de ville à une lettre sont possibles, cela peut être modifié facilement. (L'approche SUBSTR ne nécessiterait aucun changement.)
Le dernier argument, 'i'
, rend la correspondance d'expression régulière insensible à la casse (juste au cas où cela serait nécessaire).