我有一个SQL查询,其中包括以下语句在CASE WHEN语句不工作,由于NULL SQL不平等值
SELECT
(CASE
WHEN field1 > 0 THEN field1
ELSE (field2 * field3)
END) AS result
FROM table
这应该返回FIELD1的价值,除非是“0”,在该情况下该声明返回两个其他字段的产品。
我遇到的问题是,如果field1为NULL,则此语句返回NULL。
我想修改我的SQL,以便在field1为NULL时返回字段2 & 3的产品,就像在field1为'0'时一样。
我曾尝试以下:
SELECT
(CASE
WHEN field1 > 0 THEN field1
WHEN field1 IS NULL THEN (field2 * field3)
ELSE (field2 * field3)
END) AS result
FROM table
但NULL似乎仍然通过语句和NULL渗透每当FIELD1为NULL仍然返回。
首先检查“NULL”。 – Kermit 2013-02-13 14:56:37
你确定'field2'或'field3'不是'NULL'吗? – Dukeling 2013-02-13 14:56:56
您的查询已经是你想要的了。当'field1'为'NULL'时,它返回产品'field2 * field3'。如果它们中的任何一个通过'field2'或'field3'也是'NULL',则(返回的)产品将是'NULL'。 – 2013-02-13 15:05:32