所以我有这个表,其中有名为AMEX和CashOnly的列。它们都有1或0的值。现在,我想要将所有'1'值更改为'YES'而将所有'0'值更改为'NO',而不是1和0。所以它会更多观众可以理解。
我可以使用哪种最有效的SQL查询来完成此任务?
答案 0 :(得分:1)
使用单个UPDATE
声明:
UPDATE yourTable
SET AMEX = CASE WHEN AMEX = '0' THEN 'NO' ELSE 'YES' END,
CashOnly = CASE WHEN CashOnly = '0' THEN 'NO' ELSE 'YES' END
请注意,这假设您已将AMEX
和CashOnly
列转换为VARCHAR
。另请注意,没有WHERE
子句,因为您要更新表中的所有记录。
答案 1 :(得分:0)
只需使用case
声明:
select (case when AMEX = 1 then 'YES' else 'NO' end) as AMEX,
(case when cash = 1 then 'YES' else 'NO' end) as cash
. . .
答案 2 :(得分:0)
如果要更改列类型,则需要执行以下操作:(因为int字段不能将yes / no存储为值)
创建2个额外的枚举字段,将它们命名为您现在想要的任何内容。让他们成为amex1和cash1。将其值声明为“是”,“否”将默认值设置为“否”。
现在逐个执行以下2个查询。
UPDATE table_name SET amex1 = 'yes' WHERE amex = 1;
UPDATE table_name SET cash1 = 'yes' WHERE cash = 1;
现在删除现金和美国运通列分别将cash1和amex1重命名为cash和amex。希望这可以帮助你。
答案 3 :(得分:0)
试试这个:
update table set amex=(case when AMEX = 1 then 'YES' else 'NO' end) ,
CashOnly=(case when CashOnly= 1 then 'YES' else 'NO' end);
OR
update table set amex='Yes' where amex=1;
update table set amex='No' where amex=0;
update table set CashOnly='Yes' where CashOnly=1;
update table set CashOnly='No' where CashOnly=0;