我有一个简单的查询,它选择一个字段,只选择一行,即一个值。
如果查询导致空集,有没有办法让它返回NULL?而不是返回零行?
我认为我需要使用NOT EXISTS,然后使用NULL但不确定的东西。
答案 0 :(得分:11)
select
(Your entire current Select statement goes here) as Alias
from
dual
或者可能只是
select
(Your entire current Select statement goes here) as Alias
在任何一种情况下,您都要选择一个值。这意味着:
答案 1 :(得分:2)
一种简单的方法是使用聚合:
select max(col)
from t
where <your condition here>
这总是返回一行。如果没有匹配,则返回NULL
。
答案 2 :(得分:0)
使用带有NOT EXISTS的UNION(原始where子句)
select col1
from mytable
where <some condition>
union
select null
where not exists (
select * from mytable
where <some condition>)
答案 3 :(得分:-1)
您可以使用COALESCE例如:
SELECT COALESCE(Field1,NULL) AS Field1 FROM Table1
编辑1: 抱歉,我将错误的返回字段设为null而不是结果集,因为结果集返回为null使用Union和Exist函数,如下所示:
SELECT NULL AS Field1 FROM Table1 WHERE not EXISTS(SELECT Field1 FROM Table1 WHERE Field2>0)
UNION
SELECT Field1 FROM Table1 WHERE Field2>0
答案 4 :(得分:-4)
您应该使用CASE语句。