2012-08-24 11 views
5

ho ricevuto dichiarazioni come questa:Come usare IS NULL in una query parametrizzata (Delphi)

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

Ora mi chiedo come ho potuto parametrizzare questa query:

SELECT * From Table WHERE Feld IS :Value 

come non posso pas 'NOT NULL' a un parametro, penso che non è possibile a tutti - ma forse qualcuno conosce una soluzione per questo? Grazie!

risposta

6

Si potrebbe provare qualcosa di simile (testato con Firebird 2.5):

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

poi passare 'Y' o 'N' al parametro IS_NULL.

A seconda del database che si sta utilizzando, potrebbe essere necessario sostituire IIF con un CASE o un costrutto simile.

+0

Funziona bene, grazie per l'aiuto rapido! – user1619275

+0

In base all'attività OP, in Firebird può essere utilizzato [SQL_NULL] (http://www.firebirdsql.org/refdocs/langrefupd25-sqlnull.html) tipo di dati. Ma è supportato o meno, dipende dalla libreria di accesso ai dati, l'OP sta usando. –

+0

@ da-soft Collegamento interessante, grazie! Ma quello che ho capito da quella pagina era che 'SQL_NULL' poteva essere usato per specificare parametri opzionali, non NULL-ness di dati interrogati. Non sembra essere utile per questo compito. –