如何在参数化查询(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)