Delphi中的null参数在哪里

时间:2017-08-29 10:10:26

标签: sql delphi parameters zeos

我有两个ZQuery' s master和details,通过detail.DataSource和sql参数链接。

Master sql:

select key1, key2 from list

详情sql:

select * from list where key1=:key1 and key2=:key2

问题是当key2为null时,细节为空!

如何在此处获取参数与空链接字段一起使用?

2 个答案:

答案 0 :(得分:4)

SQL使用3值逻辑。所有布尔值都可以有3种状态:true,false和null(未定义)。 null是false值是where子句。您可以查找此逻辑here的thruth表。

在表达式key1=:key1 and key2=:key2中,如果任何列具有空值,则整个表达式的计算结果为空。

如果您的DBMS支持,我建议您使用IS DISTINCT FROMIS NOT DISTINCT FROM运算符。它们只能返回true或false,即使它们的一个参数为null。

基本上IS NOT DISTINCT FROMx = y OR (x IS NULL AND y IS NULL)撰写Object的方式越多。

答案 1 :(得分:2)

然后尝试在 WHERE 子句中添加一个条件,允许您在其字段中获取处于 NULL 状态的元组:

SELECT
   *
FROM
   LIST
WHERE
   KEY1 = :KEY1 AND
   (KEY2 IS NULL OR KEY2 = :KEY2)