我有以下查询。当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