我有两个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时,细节为空!
如何在此处获取参数与空链接字段一起使用?
答案 0 :(得分:4)
SQL使用3值逻辑。所有布尔值都可以有3种状态:true,false和null(未定义)。 null是false值是where子句。您可以查找此逻辑here的thruth表。
在表达式key1=:key1 and key2=:key2
中,如果任何列具有空值,则整个表达式的计算结果为空。
如果您的DBMS支持,我建议您使用IS DISTINCT FROM
或IS NOT DISTINCT FROM
运算符。它们只能返回true或false,即使它们的一个参数为null。
基本上IS NOT DISTINCT FROM
是x = 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)