prog:oracle_reverse_function
Die Oracle SQL reverse Funktion - Einen String in SQL umdrehen
Gelegentlich soll ein String von hinten gelesen werden, diese kann mit der undokumentierten reverse Funktion erfolgen.
Beispiel:
SELECT reverse('Gunther') FROM dual; REVERSE ------- rehtnuG -- test mit PL/SQL SET serveroutput ON DECLARE v_test varchar2(100); BEGIN SELECT reverse('Gunther') INTO v_test FROM dual; dbms_output.put_line(v_test); END; / rehtnuG
Dokumentierte Variante mit DBMS_RAW
Mit dem DBMS_RAW Package steht auch eine dokumentierte Funktion zur Verfügung.
Beispiel:
SELECT UTL_RAW.CAST_TO_VARCHAR2( UTL_RAW.REVERSE( UTL_RAW.CAST_TO_RAW( 'Gunther'))) FROM dual / UTL_RAW.CAST_TO_VA ------------------ rehtnuG
siehe http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/u_raw.htm#i1003598
Einsatz Beispiel
Es sollen alle EMail Adressen von einem Provider mit verschiedenen Subdomains aus einer Adresse Tabelle gelesen werden.
Beispiel:
# Dummy code: SELECT reverse('gunther@sub.hohkng.cm') FROM dual WHERE reverse('gunther@sub.hohkng.cm') LIKE 'mc.gnkhoh%';
Damit ist das „%“ nicht am Anfang des Suchstrings und es kann auch ein function Based Index eingesetzt werden.
Quellen
prog/oracle_reverse_function.txt · Zuletzt geändert: 2014/11/21 15:33 von gpipperr