【发布时间】:2014-01-12 16:40:45
【问题描述】:
如果选择返回 null,我需要返回一个值。但是我通过将查询放入子查询中找到了解决方案here
SELECT COALESCE((SELECT id FROM tbl WHERE id = 9823474), 4) AS id FROM RDB$DATABASE;
上面的查询将返回Null,因为表中不存在值 9823474 但我想在这种情况下返回一个值(例如 4),所以我找到了在子查询中使用 select 的唯一解决方案,然后COALESCE 会起作用,如果我不这样做,COALESCE 也会返回 Null。
这是唯一的解决方案吗?
【问题讨论】:
-
向我们提供更多关于您打算如何使用该值的信息?你使用什么编程语言?
-
不清楚您的查询应该做什么。你能edit 更具体一点吗?内部
SELECT尝试从 Tbl 中获取 ID,如果找不到则返回 4,但是 RDB$DATABASE 在哪里适合?根本不需要,除非有什么你没有告诉我们的。 -
@AndrejKirejeŭ 发布了更多描述。我正在寻找 SQL 解决方案
-
在Delphi中我们会这样写:q.SQL.Text = 'SELECT id FROM tbl WHERE id = 9823474'; q.ExecQuery; if q.EOF then Result := 4 else Result := q.Fields[0].AsInteger.
-
@KenWhite RDB$DATABASE 始终只有一行,因此它只是 MS SQL select-without-from 的一种符合 SQL 的方式。在 Oracle 中,通常将其排列为 SELECT (expression) FROM SYSTEM.DUAL
标签: firebird