2014-04-04 29 views
2

我正在做一些從Oracle到MSSQL的轉換,我正在閱讀有關B Supported SQL Syntax and Functions的Oracle指南。Oracle文檔不是NVL

我注意到有人說有一個非NVL函數(和它的MSSQL等價物是IS NOT NULL)。

我編譯我的同事列表,所以我們可以有語法一站式的資源和支持的功能,我在假設糾正不喜歡這樣NVL作品:

有3列,名稱,位置,loves_marmite

Andrew |英國|是

NOT NVL(loves_marmite '不行')

所以顯示的數據是:

Andrew | UK | Nope 

我只是不明白爲什麼它會被列爲Oracle函數時這只是一個邏輯問題,更重要的是,Oracle有IS NULLIS NOT NULL

對不起,我只是在將此文檔傳遞給我的同事之前尋求澄清。

編輯:如果可能的話有人會有兩個平臺之間的函數和語法差異的完整列表?

回答

2

檢查NVL2(param1, param2, param3)函數。

如果參數1是NOT (NULL or EMPTY STRING)它返回參數2否則返回參數3。

你可以寫:

NVL2(loves_marmite, 'Nope', something_else) 

而且,看到this answer爲空有關的職能甲骨文列表

0

首先,請參閱isNull函數。但是,甲骨文可能會試圖告訴你用一個案例取代NVL的功能性;

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

是的,我知道ISNULL函數和CASE語句,但的背景下Oracle的指導將不是ISNULL。如果這是可以理解的,我只是不知道爲什麼被提及。 我只是在爲我正在創建的這個文檔尋找一些解釋。 –

+0

我的觀點不是NVL()只是不是isNull()而不是字符串不是你想要的。在Oracle中有nvl2,但據我所知SQL是沒有IsNotNull的 – borjab