2011-04-01 38 views

回答

11

我喜歡使用功能COALESCE用於此目的。它從給定的參數返回第一個非空值(因此您可以一次測試多個字段)。

SELECT COALESCE(NULL, 'Special text') FROM DUAL 

所以這也將工作:

SELECT COALESCE(
    First_Nullable_Field, 
    Second_Nullable_Field, 
    Third_Nullable_Field, 
    'All fields are NULL' 
) FROM YourTable 
+2

+1,因爲'COALESCE()'也適用於mysql和其他SQL Server,而不僅僅是ORACLE。 – ZeissS 2011-04-01 09:06:21

4

只需插入NVL PL/SQL函數到你的查詢

SELECT NVL(SOMENULLABLEFIELD, '字段爲空')SOMENULLABLEFIELD FROM MYTABLE;

這裏更多的細節:http://www.techonthenet.com/oracle/functions/nvl.php

+1

這應該是單引號不是字符串文字 – 2011-04-01 08:50:28

+0

+1這正是NVL是雙引號。 – Tony 2014-06-03 01:39:29

3

您還可以使用DECODE:

select value, decode(value, NULL, 'SPECIAL', value) from 
    (select NULL value from dual 
    union all 
    select 2 value from dual 
) 
+0

那麼,如果我們要建議一個簡單的問題不必要的羅嗦解決方案...怎麼樣?當我mycolumn是NULL那麼'它是NULL,寶貝'否則mycolumn結束' – 2011-04-04 02:49:03

+0

採取點 - NVL/COALESCE是確實比DECODE更乾淨更短。 – 2011-04-04 07:43:58

+0

+1,儘管它不是問題的最優雅的解決方案,但是當我需要顯示一個文本爲null而另一個文本不爲null時,它幫助我解決了問題。 – Tony 2014-06-03 01:40:25