Problem mit internationalen Postleitzahlen in einer Abfrage

Hallo,
ich bin ganz neu hier und habe in meinem aktuellen Projekt zum ersten Mal mit Postgres
zu tun.
Ausgangspunkt:
Ich überprüfe in einem Trigger, ob sich eine Postleitzahl in einem bestimmten Bereich befindet.Der Datentyp der Postleitzahl ist “varchar”,da in England und anderen Ländern z.B. die Postleitzahl ein String ist(WA 234 etc.).

Meine Where-Klausel sieht wie folgt aus:

 WHERE
    (plzvon <= NEW.plzvon AND NEW.plzvon <= plzbis)
    OR
    (plzvon <= NEW.plzbis AND NEW.plzbis <= plzbis);

Damit prüfe ich jetzt die Postleitzahlen, ob sie in einem bestimmten Bereich liegen.
Bei PLZs aus D,A,CH ist das noch recht einfach, aber sobald ein Buchstabe vorkommt,ist die Prüfung für die Katz…

Wie mache ich das am Besten ?

Meine Frage ist jetzt,wie ich z.B. englische Postleitzahlen prüfen kann,die als String dargestellt werden ?
Wie realisiere ich eine “Prüfung” nach Buchstaben ?

Buchstaben rausschneiden (regexp_replace()), nach INT casten, fertig.

Andreas

Btw. sollte man Postleitzahlen immer in einem varchar, bzw. text ablegen - auch wenn es sich nur um Adressen aus Deutschland handelt. Nur weil deutsche Postleitzahlen nur aus Ziffern aufgebaut sind, sind es noch lange keine Zahlen.

Wie sollte man sonst auch PLZ aus dem Gebiet “0” ablegen?
Und falls es Zahlen wären: was kriegt man denn raus, wenn man eine PLZ aus München zu einer PLZ von Hamburg hinzuaddiert?

Was bringt dir die Größer-/Kleinerprüfung an der Stelle? Damit kannst du auch falsche Werte erwischen, weil PLZen sich an keinem numerischen Systen orientieren und man damit keine numerischen Operationen durchführen kann und darf.

Du wirst dir für so etwas eigene Hilfsfunktionen schreiben müssen. Diese Funktionen können gleich auch schauen, aus welchem Land die PLZ ist und ob da ev. auch Buchstaben zu behandeln sind.

Hallo,vielen Dank für eure Antworten und Anregungen.
Ich werde mir ein paar Funktionen schreiben, damit ich auch später noch PLZs validieren kann.