2012-08-24 8 views
5

ich Aussagen wie diese bekommen:Wie ist in einer parametrisierte Abfrage NULL verwenden (Delphi)

SELECT * From Table WHERE Feld IS NULL 
SELECT * From Table WHERE Feld IS NOT NULL 

Nun, wie ich frage mich, ich parametrisieren diese Abfrage könnte:

SELECT * From Table WHERE Feld IS :Value 

Da ich nicht kann pas 'NOT NULL' zu einem Parameter, ich denke das ist überhaupt nicht möglich - aber vielleicht kennt jemand eine Lösung dafür? Danke!

Antwort

6

Man könnte so etwas wie dies versuchen (getestet mit Firebird 2.5):

SELECT * FROM TABLE WHERE (IIF(FIELD IS NULL, 'Y', 'N') = :IS_NULL) 

dann 'Y' oder 'N' zum IS_NULL Parameter übergeben.

Abhängig von der verwendeten Datenbank müssen Sie möglicherweise IIF durch ein CASE oder ein ähnliches Konstrukt ersetzen.

+0

Das funktioniert gut - danke für die schnelle Hilfe! – user1619275

+0

Abhängig von der OP-Aufgabe kann in Firebird der Datentyp [SQL_NULL] (http://www.firebirdsql.org/refdocs/langrefupd25-sqlnull.html) verwendet werden. Aber ist es unterstützt oder nicht, hängt von der Datenzugriffsbibliothek ab, die das OP verwendet. –

+0

@ da-soft Interessanter Link, danke! Aber was ich von dieser Seite verstand, war, dass 'SQL_NULL' verwendet werden könnte, um optionale Parameter anzugeben, nicht NULL-Ness der abgefragten Daten. Es scheint für diese Aufgabe nicht nützlich zu sein. –