informix查询在没有找到记录时查找where null

时间:2013-12-09 13:16:42

标签: sql performance null informix

我想编写一个查询来根据我传入的参数返回结果集,但如果没有匹配的记录,我想返回结果集,其中该参数为null(我在where子句中使用的列是可空的)

我可以在一个查询中合并这两种情况吗?这是更好的性能,而不是执行两个单独的查询。

execute select * from table where col_name is null 

当我没有为select * from table col_name = $ param返回任何内容时

由于

1 个答案:

答案 0 :(得分:2)

这是一个条件语句,我无法在执行第一个查询之前进行验证,因为在运行查询之前,您无法确定第一个是否得到结果。所以我会做第一个查询,如果没有找到结果,我会做第二个查询。

你能做的是:

选择两者,将col_name = $ param放在顶部,只使用col_name为null的那些,如果找不到col_name = $ param的那些;

select * from table where col_name is null OR col_name = $param
ORDER BY (col_name is null) ASC

这应该为您提供顶部为col_name = $ param的记录,然后是col_name为NULL的记录。如果第一个记录的col_name为NOT NULL,则表示没有col_name = $ param。

的记录