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;