如何在Oracle 12c中使用多个数据更新单个列

时间:2019-01-18 20:08:32

标签: sql oracle sql-update

我正在更新一个oracle表,该列具有多个数据。我该如何编写代码?

我运行了这段代码,但是有错误。

我要用女孩代替男孩,用白色代替黑色,用颜色代替绿色。

UPDATE BIG
SET
    FNAME = CASE
        WHEN FNAME = 'BOY' THEN 'GIRL'
        WHEN FNAME = 'BLACK' THEN 'WHITE'
        WHEN FNAME = 'GREEN' THEN 'COLOR'
    END;

我需要能够编写一条语句来使用不同的多个数据更新同一列。

1 个答案:

答案 0 :(得分:2)

您需要处理ELSE(所有行将使用A-> A(身份)进行更新:

UPDATE BIG
SET
    FNAME = CASE FNAME
        WHEN 'BOY' THEN 'GIRL'
        WHEN 'BLACK' THEN 'WHITE'
        WHEN 'GREEN' THEN 'COLOR'
        ELSE FNAME
    END;

或您想要更新的更好的过滤器行:

UPDATE BIG
SET
    FNAME = CASE
        WHEN FNAME = 'BOY' THEN 'GIRL'
        WHEN FNAME = 'BLACK' THEN 'WHITE'
        WHEN FNAME = 'GREEN' THEN 'COLOR'
    END;
WHERE FNAME IN('BOY', 'BLACK', 'GREEN');

<=>

UPDATE BIG
SET FNAME = DECODE(FNAME, 'BOY', 'GIRL', 'BLACK', 'WHITE', 'GREEN', 'COLOR')
WHERE FNAME IN('BOY', 'BLACK', 'GREEN');