我有以下查詢。當type_id is null
我希望它被分組的名稱「未知」。
我該怎麼做。
我知道有一個解碼功能,但我不知道如何使用它。SQL解碼空值
select type_id,
name
from test_table
group by decode(type_id,'Unknown'),
name;
我該怎麼辦?
我有以下查詢。當type_id is null
我希望它被分組的名稱「未知」。
我該怎麼做。
我知道有一個解碼功能,但我不知道如何使用它。SQL解碼空值
select type_id,
name
from test_table
group by decode(type_id,'Unknown'),
name;
我該怎麼辦?
select decode(type_id, null, 'Unknown', type_id), name, count(*)
from
(
select 'asdf' type_id, 'name1' name from dual union all
select 'asdf' type_id, 'name2' name from dual union all
select null type_id, 'name3' name from dual
) test_table
group by type_id,name;
我@sql_mommy是CASE
可能會更好看同意使用。但我不同意使用TechOnTheNet作爲您的主要信息來源。官方文檔通常會更好,page for DECODE就是一個很好的例子。
DECODE
有一些奇怪的行爲:「在DECODE函數中,Oracle認爲兩個空值是等價的。」這一行爲在TechOnTheNet文章中沒有提及。
對於null,我們有NVL函數。它可以如下
select nvl(type_id,'Unknown'),name from test_table group by
type_id,name;
您可以使用該NVL
功能或COALESCE
:
select NVL(type_id, 'Unknown') AS type_id,
name
from test_table
group by NVL(type_id, 'Unknown'),
name;
或者
select COALESCE(type_id, 'Unknown') AS type_id,
name
from test_table
group by COALESCE(type_id, 'Unknown'),
name;
COALESCE
比NVL
更有效,因爲它僅評估第二個參數,如果第一個是NULL而NVL
評估板每次都有兩個參數。
希望它可以幫助...
IFNULL(),COALESC() – wildplasser 2012-03-15 00:39:56
DECODE是解碼(列,potentialvalue,結果,2ndpotentialvalue,結果...... NpotentialValue,結果,elsevalue)case語句有點容易閱讀等都是有些人喜歡的。僅供參考 - 用於快速定義功能的重要資源是TechOnTheNet。 http://www.techonthenet.com/oracle/functions/decode.php你可以很容易地谷歌「Oracle解碼」,它需要你正確的上面的鏈接頁面。保存發佈並等待答案。 – user158017 2012-03-15 01:50:49