您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle 11g:查询不返回任何内容时,默认为静态值

Oracle 11g:查询不返回任何内容时,默认为静态值

这应该是您所做的工作的简单版本:

SELECT NVL(desired_datum, 'default') AS desired_datum
FROM DUAL LEFT JOIN  data_table ON the_key = &input_value
@H_419_5@
 

          

解决方法

在Oracle
11g中工作时,我需要在表中存在一个输入值时选择一个与该输入值相对应的数据,而在不存在时选择一个静态默认值。我能找到的最好的方法是编写如下代码:

SELECT desired_datum
FROM (
    --Try to get explicit datum
    SELECT desired_datum,1 AS was_found
    FROM data_table
    WHERE the_key = &input_value
    UNION
    --Get default datum
    SELECT 'default' AS desired_datum,0 AS was_found
    FROM dual
    --Put explicit datum on top,if it exists
    ORDER BY was_found DESC
) finder
WHERE ROWNUM <=1;

似乎必须有一些惯用的方法来执行此操作,而这并不依赖于对的奇怪使用ORDER BY,但我找不到它。有谁知道更好的方法吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
SELECT desired_datum
FROM (
    --Try to get explicit datum
    SELECT desired_datum,1 AS was_found
    FROM data_table
    WHERE the_key = &input_value
    UNION
    --Get default datum
    SELECT 'default' AS desired_datum,0 AS was_found
    FROM dual
    --Put explicit datum on top,if it exists
    ORDER BY was_found DESC
) finder
WHERE ROWNUM <=1;

在Oracle
11g中工作时,我需要在表中存在一个输入值时选择一个与该输入值相对应的数据,而在不存在时选择一个静态默认值。我能找到的最好的方法是编写如下代码:

似乎必须有一些惯用的方法来执行此操作,而这并不依赖于对的奇怪使用ORDER BY,但我找不到它。有谁知道更好的方法吗?

Oracle 2022/1/1 18:49:03 有383人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶