我想寫一個select,除非字段爲空,否則顯示該字段的值是正常的。如果它爲空,我想顯示一個特殊的文本,例如「Field is null」。我最好怎麼做?Oracle:如果字段爲空,則顯示特殊文本
// Oracle newbie
我想寫一個select,除非字段爲空,否則顯示該字段的值是正常的。如果它爲空,我想顯示一個特殊的文本,例如「Field is null」。我最好怎麼做?Oracle:如果字段爲空,則顯示特殊文本
// Oracle newbie
我喜歡使用功能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
只需插入NVL PL/SQL函數到你的查詢
SELECT NVL(SOMENULLABLEFIELD, '字段爲空')SOMENULLABLEFIELD FROM MYTABLE;
這裏更多的細節:http://www.techonthenet.com/oracle/functions/nvl.php
這應該是單引號不是字符串文字 – 2011-04-01 08:50:28
+1這正是NVL是雙引號。 – Tony 2014-06-03 01:39:29
您還可以使用DECODE:
select value, decode(value, NULL, 'SPECIAL', value) from
(select NULL value from dual
union all
select 2 value from dual
)
那麼,如果我們要建議一個簡單的問題不必要的羅嗦解決方案...怎麼樣?當我mycolumn是NULL那麼'它是NULL,寶貝'否則mycolumn結束' – 2011-04-04 02:49:03
採取點 - NVL/COALESCE是確實比DECODE更乾淨更短。 – 2011-04-04 07:43:58
+1,儘管它不是問題的最優雅的解決方案,但是當我需要顯示一個文本爲null而另一個文本不爲null時,它幫助我解決了問題。 – Tony 2014-06-03 01:40:25
+1,因爲'COALESCE()'也適用於mysql和其他SQL Server,而不僅僅是ORACLE。 – ZeissS 2011-04-01 09:06:21