Manchmal kann es sinnvoll sein, die Telefonnummern in einer Tabelle zu normalieren, d.h. ohne schmückendes Beiwerk wie Trennungs- oder Leerzeichen darzustellen. Anwendungsbeispiele sind z.B. die Anruferkennung bei einer CTI-Anwendung oder die Suche nach Telefonnummer-Dubletten, die sich nur durch unterschiedliche Trennzeichen-Syntax unterscheiden.
Die folgende PL/SQL – Funktion liefert nur die Ziffern einer übergebenen Zeichenfolge zurück:
CREATE FUNCTION telnr_extract(character varying) RETURNS text AS ' DECLARE i INTEGER; telnr VARCHAR; laenge INTEGER; buchst VARCHAR; buchst_asc INTEGER; save VARCHAR; BEGIN laenge := length($1); telnr := ''''; IF laenge > 0 THEN FOR i IN 1 .. laenge LOOP buchst := substring($1 from i for 1); buchst_asc := ascii(buchst); IF buchst_asc >= 48 AND buchst_asc <= 57 THEN telnr := textcat(telnr,buchst); END IF; END LOOP; END IF; RETURN telnr; END; ' LANGUAGE plpgsql;