我正在尝试使用CASE运算符(在Oracle中)进行NULL替换:
SELECT
orderID,
shippedDate,
CASE WHEN shippedDate IS NULL
THEN 'Not Shipped'
END
FROM ORDERS
WHERE SHIPPEDDATE is NULL;
但由于某种原因,它会添加一个带有替换值的额外列,而不是替换SHIPPEDDATE null-value:
我做错了什么?
答案 0 :(得分:1)
您在select语句中显示3个值,这就是您收到此类输出的原因。仅显示order_id和case_value。
使用此查询:
SELECT
orderID,
CASE
WHEN shippedDate IS NULL THEN 'Not Shipped'
END
AS shippedFinalDate
FROM ORDERS
WHERE SHIPPEDDATE is NULL;
答案 1 :(得分:1)
您只需要排除实际的ShippedDate列。如果您不想要它,那么请不要包含它。 CASE声明无需工作。
SELECT
orderID,
CASE WHEN shippedDate IS NULL
THEN 'Not Shipped'
ELSE 'Shipped'
END
FROM ORDERS
WHERE SHIPPEDDATE is NULL;