===== 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 ==== * http://www.dbasupport.com/forums/showthread.php?18399-Reverse%28%29-function-in-oracle