2010-12-21 96 views
1

我發現了很多關於DB2及其強類型系統的信息,但沒有提供關於拋出NULL的全面情況說明。此外,版本之間似乎存在細微的差異。在DB2 SQL語句中拋出NULL

我不太明白什麼時候我可以簡單地把null放在一個SQL子句中,當我需要明確地將null轉換爲任何其他類型。

實例(其中之一是正確的?)

插入(或更新):

INSERT INTO X (A) VALUES (null) 
INSERT INTO X (A) VALUES (cast(null as integer)) 

選擇:

SELECT null FROM SYSIBM.DUAL 
SELECT cast(null as integer) FROM SYSIBM.DUAL 

呼叫(存儲過程):

X (null); 
X (cast(null as integer)); 

等......

有沒有人知道一個很好的資源解釋時,需要強制轉換?並且在哪些版本的DB2中使用哪些配置參數?

回答

1
  • 對於INSERT操作,兩者都可以工作。
  • 對於SELECT,轉換是必要的。
  • 對於存儲過程,我假設兩者都可以工作。

推理相對簡單:

  1. 與插入件,目標列(A)告訴其鍵入NULL是系統。
  2. 使用存儲過程時,參數聲明告訴系統NULL是哪種類型。
  3. 使用SELECT,除了強制轉換之外沒有任何東西可以告訴系統NULL是哪種類型。
+0

你的推理是有道理的,對我來說是個好消息。你知道那裏有記載嗎? – 2010-12-22 07:41:27