Ihre erste Abfrage wäre richtig, wenn Sie AND
verwenden würden statt OR
.
Sie finden es vielleicht logisch einfacher als:
where not (city like 'A%' or city like 'E%' or . . . ) and
. . .
Nach den Regeln der Logik ist dies äquivalent zu:
where city not like 'A%' and city not like 'E%' and . . . ) and
. . .
Der reguläre Ausdruck hat nur den Vergleich am Anfang der Zeichenfolge:
where not regexp_like(lower(city), '^[aeiou].*[aeiou]$')