Oracle文档中的NOT NVL

3

我正在将Oracle转换为MSSQL,我正在阅读Oracle的B支持的SQL语法和函数指南。

我注意到指南中提到有一个NOT NVL函数(其MSSQL等效函数为IS NOT NULL)。

我正在为我的同事编制列表,以便我们可以拥有一个一站式的语法和支持函数资源,我是否正确地认为NOT NVL的工作方式如下:

有3列,名称,位置,喜欢马玛莉特

安德鲁|英国|是的

NOT NVL(loves_marmite,'Nope')

因此,显示的数据将是:

Andrew | UK | Nope

我不明白为什么它会被列为Oracle函数,因为它只是一个逻辑问题,而且Oracle还有IS NULL和IS NOT NULL。抱歉,在将此文档传递给我的同事之前,我需要一些澄清。
编辑:如果可能的话,是否有人可以提供两个平台之间函数和语法差异的综合列表?
2个回答

4

请查看 NVL2(param1, param2, param3) 函数。

如果参数1不是 NULL 或者 空字符串,则返回参数2;否则返回参数3。

你可以这样写:

NVL2(loves_marmite, 'Nope', something_else)

此外,可查看此答案,其中列出了Oracle中与null相关的函数列表。

0

首先,请查看isNull功能。但是,Oracle可能正在尝试告诉您使用case替换NVL功能;

SELECT CASE WHEN Foo IS NOT NULL THEN bar
                                 ELSE BLA
             END

是的,我知道ISNULL函数和CASE语句,但Oracle指南中提到的上下文应该是NOT ISNULL。如果可以理解的话,我只是不知道为什么要提到它。我只是想为我正在创建的文档寻求一些澄清。 - ZeroBased_IX
在我看来,NOT NVL() 只是 NOT isNull(),对字符串执行 not 操作并不是你想要的。在 Oracle 中有 nvl2,但在 SQL 中,据我所知,没有 IsNotNull。 - borjab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接