2012-08-24 14 views
5

llegué declaraciones como esta:Cómo utilizar IS NULL en una consulta parametrizada (Delphi)

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

Ahora me pregunto cómo pude parametrizar esta consulta:

SELECT * From Table WHERE Feld IS :Value 

ya que no puedo pas 'NOT NULL' a un parámetro, creo que eso no es posible en absoluto, pero ¿alguien sabe una solución para eso? Gracias!

Respuesta

6

Usted podría intentar algo como esto (probado con Firebird 2.5):

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

A continuación, pasar 'Y' o 'N' al parámetro IS_NULL.

Dependiendo de la base de datos que esté utilizando, es posible que necesite reemplazar IIF con un CASE o constructo similar.

+0

Eso funciona bien, gracias por la ayuda rápida! – user1619275

+0

Dependiendo de la tarea OP, en Firebird se puede utilizar el tipo de datos [SQL_NULL] (http://www.firebirdsql.org/refdocs/langrefupd25-sqlnull.html). Pero es compatible o no, depende de la biblioteca de acceso a datos, el OP está utilizando. –

+0

@ da-soft ¡Enlace interesante, gracias! Pero lo que entendí de esa página fue que 'SQL_NULL' podría usarse para especificar parámetros opcionales, no NULL-ness de datos consultados. No parece ser útil para esta tarea. –

Cuestiones relacionadas