我的用户表目前有一个字段sex
,它是1或2.我想将这些值转换为“F”或“M”并将它们放入不同的列中。在mySQL中有没有办法做到这一点?
我可以在控制台中编写Ruby代码来执行此操作,但我有100K用户的订单,并且不想在循环时停止生产。
答案 0 :(得分:1)
您可以分三步完成
第1步 在表格中添加一个新列
alter table table_name add column sex_n char(1)
;
第2步 写一个更新查询
update table_name
set sex_n = case when sex = 1 then 'M' else 'F' end ;
第3步 验证数据是否填充正确,然后执行
alter table table_name drop column sex
alter table table_name change sex_n sex char(1);
如果您不想要额外的列,可以使用select转换为
select
case when sex=1 then 'M'
else 'F'
end as sex
from table_name
答案 1 :(得分:0)
<强>查询:强>
UPDATE tbl_name SET sex = (CASE WHEN sex = 1 THEN 'M' WHEN sex = 2 THEN 'F' ELSE '' END);
添加名为gender
的额外列,然后:
UPDATE tbl_name SET gender = (CASE WHEN sex = 1 THEN 'M' WHEN sex = 2 THEN 'F' ELSE '' END);