Conditional Filter bei SQL Datentabellen

Hallo,
Ist es möglich den Datenfilter auf einer Tabelle so anzugeben, dass er nur in den Fällen greift wenn tatsächlich ein Filter definiert wurde?
Beispiel: Ich habe eine Kundenliste mit Name und Kundennummer. Der Nutzer kann nach Name oder Kundennummer filtern (Berichtsparameter). Ist der Filter leer soll er ignoriert werden, gibt der Nutzer also keine Kundennummer und keinen Namensfilter an sollen alle Einträge geliefert werden. Aktuell wird kein Eintrag zurückgegeben weil der Filter auf einen leeren String vergleicht den es in den Einträgen nicht gibt.
Mein Workarround sieht so aus:
IsNullOrEmpty(@customerNumber) OR Contains(CustomerTable.CustomerNumber,@customerNumber,1)
Jetzt erhalte ich zwar das gewünschte Verhalten kriege aber auch die Meldung vom Designer, dass der Ausdruck nicht in einen Befehl des Datanbanksystems übersetzt werden kann und damit nicht besonders performant ist.
Ideen?
Kai

Hallo,

wie würde es denn mit diesem Ausdruck aussehen?

(IsNull(@Parameter01) or Empty(@Parameter01)) OR Contains(Customers.CustomerID, @Parameter01,1)

Funktioniert der Check und wird er dann auch als optimal im Designer angezeigt?

Super, danke. Daa bin ich nicht drauf gekommen. Ich ging davon aus, dass IsNullOrEmpty intern eh in diese beiden Ausdrücke heruntergebrochen wird - war wohl eine Fehlannahme.
Vielen Dank nochmal

Gerne möchten wir an dieser Stelle mitteilen, dass wir nun auch nativ die Designer-Funktion IsNullOrEmpty() ab dem nächsten Service Pack 25.003 in den SQL-basierten Datenquellen unterstützen werden, sodass der bisherige Workaround mit Hilfe des Splittings auf IsNull() und Empty() nicht mehr notwendig sein sollte.

1 Like