2012-08-30 53 views
0
SELECT IFNULL(Col,'b') FROM Table 

如果不爲空,則返回Col如果不是null,則返回b。如果爲NULL,則爲'否',如果爲NULL,則爲'是'

如何檢查列,並返回'a'如果不爲空或'b'爲空。

我嘗試這樣做:

SELECT IF(Col=NULL,'a','b') FROM Table 

它總是返回 'B'。這是如何完成的?

+0

請參見本手冊:http://dev.mysql.com/doc/refman/5.5/en/working-with-null.html – Omesh

回答

5

使用IS NULL檢查列是否爲空,而不是= NULL

每個值與NULL比較的結果將是NULL,所以你總是會得到b

SELECT IF(Col IS NULL,'a','b') FROM Table 
0

您可以使用ANSI SQL-92兼容CASE聲明至極的作品專有IF語句而不是所有的DBMS。

SELECT CASE WHEN Col IS NULL THEN 'a' ELSE 'b' END AS Col 
FROM Table 

預期,因爲你不能使用=跡象比較NULL您當前的說法是不工作,你必須使用IS NULL代替。

你可能想在Three Valued Logic

讀取以來null不是任何數據域的成員,它不被視爲一個 「價值」,而是一個標記(或佔位符)表明不存在價值爲 。正因爲如此,與空的比較永遠不能導致 無論是真或假,但總是在第三合乎邏輯的結果,未知

0

在比較空值使用IS代替=

SELECT IF(Col IS NULL,'a','b') 
FROM Table