SELECT IFNULL(Col,'b') FROM Table
如果不为空,则返回Col如果不是null,则返回b。如果为NULL,则为'否',如果为NULL,则为'是'
如何检查列,并返回'a'如果不为空或'b'为空。
我尝试这样做:
SELECT IF(Col=NULL,'a','b') FROM Table
它总是返回 'B'。这是如何完成的?
SELECT IFNULL(Col,'b') FROM Table
如果不为空,则返回Col如果不是null,则返回b。如果为NULL,则为'否',如果为NULL,则为'是'
如何检查列,并返回'a'如果不为空或'b'为空。
我尝试这样做:
SELECT IF(Col=NULL,'a','b') FROM Table
它总是返回 'B'。这是如何完成的?
使用IS NULL
检查列是否为空,而不是= NULL
。
每个值与NULL
比较的结果将是NULL
,所以你总是会得到b
。
SELECT IF(Col IS NULL,'a','b') FROM Table
您可以使用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不是任何数据域的成员,它不被视为一个 “价值”,而是一个标记(或占位符)表明不存在价值为 。正因为如此,与空的比较永远不能导致 无论是真或假,但总是在第三合乎逻辑的结果,未知
在比较空值使用IS
代替=
SELECT IF(Col IS NULL,'a','b')
FROM Table
请参见本手册:http://dev.mysql.com/doc/refman/5.5/en/working-with-null.html – Omesh