【问题标题】:How to display a default value when no match found in a query?在查询中找不到匹配项时如何显示默认值?
【发布时间】:2011-11-20 08:56:01
【问题描述】:

我想在没有从查询中获得数据时显示默认消息。

例如 让我们来查询一下

从 id = 100 的员工中选择 empname

如果没有与此搜索匹配的数据,我希望得到Unavailable 作为结果,或者应该显示所需的结果。

那么我应该如何编写一个 SQL 查询来实现这一点。

我正在使用 Oracle 10g。

【问题讨论】:

  • 你真的应该只返回null 并让你的调用应用程序决定它在遇到db_null 时的行为,而不是在你的数据库中这样做。
  • @Seph :感谢您的提示,如果我在调用应用程序中返回 null,我必须将 null 替换为默认消息。因此,而不是如果我试图做它查询本身。
  • 我已经想到了所有这些场景,然后只将 IF() 移动到 SQL,因为这两个地方的行为都是相同的

标签: sql oracle coalesce


【解决方案1】:
SELECT COALESCE((SELECT empname FROM employee WHERE id = 100), 'Unavailable')
FROM   DUAL;

您必须将SELECT 包装到另一个SELECT 中,否则将不会返回任何行。而没有行的地方,就不可能有值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多