有一个名为EMP
的表格和一个名为Gender
的列,其定义为VARCHAR(1)
,因此' M'对于男性和' F'对于女性。一位开发人员意外地改变了M'到' F'和' F'到了' M'。
如何在不使用临时表的情况下纠正此问题?
答案 0 :(得分:4)
您可以使用case
表达式:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END
编辑:
上面的陈述假设,为简单起见,'M'
和'F'
是唯一的两个选项 - 没有null
s,没有未知数,没有任何内容。更强大的查询可以消除这种假设,并且只是严格替换M
和F
,而不会触及其他可能的值:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F'
WHEN 'F' THEN 'M'
ELSE gender
END
答案 1 :(得分:2)
使用这3个更新语句:
update EMP set gender='X' where gender='M';
update EMP set gender='M' where gender='F';
update EMP set gender='F' where gender='X';