我正在做一些从Oracle到MSSQL的转换,而我正在B Supported SQL Syntax and Functions阅读Oracle的指南。
我注意到有一个NOT NVL函数(它的MSSQL等价物是IS NOT NULL)。
我正在为同事编写一个列表,这样我们就可以获得语法和支持函数的一站式资源,我是否认为NOT NVL的工作方式是正确的:
有3列,名称,位置,loves_marmite
安德鲁|英国|是
NOT NVL(loves_marmite,' Nope')
所以显示的数据是:
Andrew | UK | Nope
我只是不明白为什么当它只是一个逻辑问题时它会被列为Oracle功能,而且更重要的是Oracle有 IS NULL 和 IS NOT NULL 。
对不起,在我将这份文件传递给我的同事之前,我只是在寻找一些澄清。
编辑:如果有可能,有人会在两个平台之间找到功能和语法差异的完整列表吗?
答案 0 :(得分:3)
检查NVL2(param1, param2, param3)
功能。
如果param1为NOT (NULL or EMPTY STRING)
,则返回param2,否则返回param3。
你可以写:
NVL2(loves_marmite, 'Nope', something_else)
另外,请参阅this answer以获取Oracle
中与空相关的函数列表答案 1 :(得分:0)
首先,请参阅isNull功能。但甲骨文可能会试图告诉你用案例取代NVL功能;
SELECT CASE WHEN Foo IS NOT NULL THEN bar
ELSE BLA
END