如何在参数化查询(Delphi)中使用IS NULL

如何在参数化查询(Delphi)中使用IS NULL,delphi,parameters,isnull,Delphi,Parameters,Isnull,我有这样的陈述: SELECT * From Table WHERE Feld IS NULL SELECT * From Table WHERE Feld IS NOT NULL 现在我想知道如何将此查询参数化: SELECT * From Table WHERE Feld IS :Value 由于我不能将参数设为“NOTNULL”,我认为这根本不可能——但也许有人知道解决方案? 谢谢 您可以尝试以下内容(使用Firebird 2.5进行测试): 然后将'Y'或'N'传递给IS\u NUL

我有这样的陈述:

SELECT * From Table WHERE Feld IS NULL
SELECT * From Table WHERE Feld IS NOT NULL
现在我想知道如何将此查询参数化:

SELECT * From Table WHERE Feld IS :Value
由于我不能将参数设为“NOTNULL”,我认为这根本不可能——但也许有人知道解决方案?
谢谢

您可以尝试以下内容(使用Firebird 2.5进行测试):

然后将
'Y'
'N'
传递给
IS\u NULL
参数


根据您正在使用的数据库,您可能需要将
IIF
替换为
CASE
或类似结构。

根据OP任务,在Firebird中可能会使用数据类型。但它是否受支持,取决于数据访问库,OP正在使用。@da soft有趣的链接,谢谢!但我从该页面了解到,
SQL\u NULL
可用于指定可选参数,而不是查询数据的空值。它似乎对这项任务没有用处。它可能有用。例如,如果
字段
为整数且所有值均大于0,则可能会写入以下条件:
字段>:p或:p为空且字段为空
。因此,当:p=0时,等价于
的值不为NULL
,当:p=NULL时,等价于
的值为NULL
。但同样,这取决于数据访问库,它支持或不支持SQL\u NULL特性。要添加-即使没有SQL\u NULL支持,这也可以工作,但SQL\u NULL支持使其更有效。
SELECT * FROM TABLE WHERE (IIF(FIELD IS NULL, 'Y', 'N') = :IS_NULL)