Oracle Tip der Woche 2015

Meine beiden Kollegen Michael und Norbert hatten eines Tages die großartige Idee, jede Woche eine interessante, außergewöhnliche oder praktische Oracle-Funktion durchzubesprechen und mit einem Beispiel auch zu veranschaulichen. Aus dieser Idee wurde schließlich der Oracle Tip der Woche, zuerst nur auf unserem Whiteboard und nun sogar für alle einsichtig im World Wide Web.

KW 47: REGEXP_LIKE

REGEXP_LIKE ist ähnlich dem LIKE, zusätzlich kann es noch eine Regular Expression auswerten. Dadurch wird beispielsweise eine IN Bedingung mit Platzhalter möglich oder es kann wie im folgenden Beispiel nach Vornamen mit verschiedenen Schreibweisen gesucht werden.

SELECT vorname, nachname
FROM mitarbeiter
WHERE REGEXP_LIKE (vorname, '^Ste(f|ph)an$');

Buchtip: Oracle SQL: Das umfassende Handbuch

Ein umfassendes Lernbuch und Nachschlagewerk ist Oracle SQL: Das umfassende Handbuch* vom Rheinwerk Verlag. Neben allgemeinen Datenbank-Grundkenntnissen wird ein weiter Bogen von SQL bis Oracle spezifischen Funktionen gespannt.

KW 48: INSERT aus SELECT Ergebnis

Mit dem folgenden Statement ist es möglich, Daten in ein Tabelle einzufügen, die zuerst mittels SELECT aus einer anderen Tabelle selektiert wurden. Zusätzlich werden Werte statisch mitgegeben.

INSERT INTO personal(stufe, vorname, nachname)
SELECT 'JUNIOR', vorname, nachname FROM bewerber
WHERE einstellungsjahr = 2016;
KW 49: NVL2

Bei NVL2 kann im Gegensatz zu NVL ein Wert für NULL und nicht-NULL definiert werden.

SELECT nvl2(Spalte, 'nicht null', 'null') FROM tabelle;

SELECT vorname, nachname, nvl2(provision, gehalt * provision, gehalt) FROM mitarbeiter;

Buchtip: Der Oracle DBA

Das hilfreiche Handbuch für alle Oracle Administratoren der Oracle Datenbank Version 12c. Hier finden sie geballtes Wissen namhafter und praxiserfahrener Autoren.

KW 52: SYS_OP_DISTINCT

SYS_OP_DISTINCT gibt 0 zurück, wenn die Werte der 2 angegebenen Spalten ident sind. Sind die Werte nicht ident, wird 1 zurückgegeben.

Das folgende Beispiel gibt alle Einwohner zurück, die in ihrem Wohnort auch arbeiten.

SELECT vorname, nachname
FROM einwohner
WHERE sys_op_distinct(wohnort, arbeitsort) = 0;

Hier gibts noch mehr...

Last update on 2024-08-27.

Go back