gpt4 book ai didi

sql - 甲骨文解码与 NVL

转载 作者:行者123 更新时间:2023-12-04 18:25:50 25 4
gpt4 key购买 nike

我正在尝试分析由离职开发人员编写的现有 Oracle 查询。我不精通 Oracle,我对使用此 DECODE 有点困惑Microfocus COBOL 中的函数app(其中 :BV-POS_YEAR 是设置为年份的变量):

SELECT ...., DECODE(DELV_YEAR, NULL, :BV-POS_YEAR, DELV_YEAR), ....

我试图了解这与以下内容有何不同:
SELECT ...., NVL(DELV_YEAR, :BV-POS_YEAR), ....

我对 DECODE 有什么误解吗?或 NVL职能?开发人员知道 NVL 函数,因为它在同一个 select 语句的其他地方使用。

最佳答案

NVL替换 NULL按指定值。
DECODE用所需值替换任何指定值并且可以链接。您的用法是等效的,但是 DECODE有更广泛的用途。例如,您可以编写此代码

SELECT supplier_name,
DECODE(supplier_id, 10000, 'IBM',
10001, 'Microsoft',
10002, 'Hewlett Packard',
'Gateway') result
FROM suppliers;

相当于这个伪代码
if (supplier_id == 10000)
{
SELECT 'IBM'
} else if (supplier_id == 10001)
{
SELECT 'Microsoft'
} else if (supplier_id == 10002)
{
SELECT 'Hewlet Packard'
} else
{
SELECT 'Gateway'
}

编辑 : NULL 替换的 NVL 和 DECODE 的性能由用户测量,似乎几乎相等。

我个人建议在需要替换 NULL 时使用 NVL,因为它更具表现力。

关于sql - 甲骨文解码与 NVL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26847126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com