Optionale Abfrageparameter in SQL mittels NVL() realisieren

von Tobias Redmann

Bei Abfrage auf eine Tabelle mit beliebigen Kombinationen von Einschränkungen z.B. aus einem Frontend heraus, können sehr schnell hunderte Kombinationen von Abfragevarianten entstehen. Gerade im Bezug auf die Abfrage auf NULL-Werte, werden die SQL-Statements sehr schnell unübersichltich. Mit dem folgenden SQL-Konstrukt – realisiert mittels der SQL Function NVL() – könnt ihr sozusagen „optionale“ Parameterwerte definieren. Das Bedeutet, dass die Parameter die mit Werten belegt werden in dem SQL-Statement berücksichtigt werden, alle anderen Columns werden in der WHERE Bedingung ignoriert.´

Demo – NVL()

Eine kleine Demo veranschaulicht den Mehrwert dieser Abfragevariante mittels NVL.

Die folgende Abfrage absetzen und mal ein paar Kombinationen durchspielen, z.B. Kombination Nachname + Vorname oder nur der Nachname usw.

Eine explizite Abfrage auf NULL-Werte ist mit der obigen Variante nicht möglich.
Hier solltet ihr das folgende Konstrukt in der WHERE-Bedingungen für die entsprechenden Parameter wählen.

Das Thema Performance habe ich in diesem Post nicht betrachtet. Lösungsansätze wären Function-Based Indizies oder der Einsatz von virtuellen Columns (+ Indizierung).

Habt ihr andere Lösungsansätze?

SCHREIBEN SIE EINEN KOMMENTAR