2012-08-30 54 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