0
SELECT IFNULL(Col,'b') FROM Table

检查 Col,如果不为 null,则返回 Col,否则返回 b。

如何检查 Col,如果不为 null,则返回“a”,如果为 null,则返回“b”。

我试过这个:

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

总是返回'b'。这是怎么做到的?

4

3 回答 3

8

用于IS NULL检查列是否为空,而不是= NULL.

每个值都会与NULL结果进行比较NULL,所以你总会得到b

SELECT IF(Col IS NULL,'a','b') FROM Table
于 2012-08-30T05:54:10.490 回答
0

CASE您可以使用适用于所有 DBMS 的ANSI SQL-92 兼容语句,而不是专有IF语句。

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

您当前的语句未按预期工作,因为您无法NULL使用=符号进行比较,您必须IS NULL改用。

您可能想阅读三值逻辑

由于 Null 不是任何数据域的成员,因此它不被视为“值”,而是指示不存在值的标记(或占位符)。因此,与 Null 的比较永远不会导致 True 或 False,但总是会产生第三个逻辑结果,Unknown

于 2012-08-30T05:54:24.577 回答
0

比较空值时使用IS而不是=

SELECT IF(Col IS NULL,'a','b') 
FROM Table
于 2012-08-30T05:55:33.110 回答