Как обновить один столбец с несколькими данными в Oracle 12C - PullRequest
0 голосов
/ 18 января 2019

Я обновляю таблицу оракулов, тот же столбец с несколькими данными. Как мне написать код?

Я запускаю этот код, но произошла ошибка ..

Я заменяю мальчика с девочкой, черного с белым и зеленого с цветом.

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

Мне нужно иметь возможность написать одно утверждение, которое может обновить один и тот же столбец с различными и несколькими данными.

1 Ответ

0 голосов
/ 18 января 2019

Вам нужно обработать 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...