Prüfen von Werten, isnumber

Immer mal wieder kommt das Thema: Ist der Wert eine Zahl oder nicht?

Bis Oracle 10g am besten per Translate:
translate(spalte,'a0123456789', 'a') gegen null prüfen

Anm: Das 'a' ist wichtig! - Translate braucht min. 1 Buchstaben, den es ersetzen soll - Im Bsp wird a durch a ersetzt, 0 durch nix, 1 durch nix, ... 9 durch nix -> Ergebnis: wenn der Rückgabewert null ist, waren nur Ziffern enthalten.

Übersichtlicher wird's ab 10g per regular Expressions:
REGEXP_LIKE (wert,'^[[:digit:]]{3}$') - Prüft, ob genau 3 Ziffern enthalten sind.

Weitere Möglichkeiten und Erläuterungen u.a.:
http://www.oracle.com/global/de/community/tipps/regexp/index.html
und
http://sql-plsql-de.blogspot.com/2009/02/regulare-ausdrucke-in-der-datenbank.html
bzw. in der Doku:
http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/conditions007.htm#i1048942

Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen