如果select返回null,则返回一个值

时间:2014-01-12 16:40:46

标签: firebird

如果select返回null,我需要返回一个值。但是我通过在子查询

中放置查询找到了解决方案here
SELECT COALESCE((SELECT id FROM tbl WHERE id = 9823474), 4) AS id FROM RDB$DATABASE;

上面的查询将返回Null,因为表中不存在值9823474但我想在这种情况下返回一个值(对于ex 4)所以我找到了使用select子查询的唯一解决方案然后COALESCE会起作用,如果我没有这样做COALESCE也会返回Null

这是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:2)

不,这不是唯一的例子

Select first 1 id from (
    Select id FROM tbl WHERE id = 9823474

    Union All

    Select 4 from rdb$database) 

或者您可以使用匿名程序http://firebirdsql.su/doku.php?id=execute_block

 EXECUTE BLOCK RETURNS ( id integer )
 AS
 BEGIN
      IF ( EXISTS (SELECT * FROM tbl WHERE id = 9823474) )
      THEN id = 9823474;
      ELSE id = 4;

      SUSPEND;
 END

......那里总有很多方法