Twoje pierwsze zapytanie byłoby poprawne, jeśli użyłeś AND
zamiast OR
.
Może się to wydawać prostsze, ponieważ:
where not (city like 'A%' or city like 'E%' or . . . ) and
. . .
Zgodnie z zasadami logiki jest to równoważne:
where city not like 'A%' and city not like 'E%' and . . . ) and
. . .
Jeśli chodzi o wyrażenie regularne, ma tylko porównanie na początku ciągu:
where not regexp_like(lower(city), '^[aeiou].*[aeiou]$')