有一张名为EMP
的表,其中有一个名为Gender
的列,定义为VARCHAR(1)
,因此'M'表示男性,'F'表示女性。开发人员不小心将'M'更改为'F',将'F'更改为'M'。
如何在不使用临时表的情况下纠正这个问题?
有一张名为EMP
的表,其中有一个名为Gender
的列,定义为VARCHAR(1)
,因此'M'表示男性,'F'表示女性。开发人员不小心将'M'更改为'F',将'F'更改为'M'。
如何在不使用临时表的情况下纠正这个问题?
您可以使用case
表达式:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END
编辑:
为简单起见,上述声明假设'M'
和'F'
是仅有的两个选项——没有null
,没有未知数,没有任何其他东西。更强大的查询可以消除这种假设,只严格替换M
和F
,使其他可能的值保持不变:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F'
WHEN 'F' THEN 'M'
ELSE gender
END
请使用以下三个更新语句:
update EMP set gender='X' where gender='M';
update EMP set gender='M' where gender='F';
update EMP set gender='F' where gender='X';