在Snowflake中如何使用CASE语句将varchar2类型STATUS字段转换为int类型
实现代码
以下是适配Oracle数据库(对应varchar2类型)的CASE语句实现,注意匹配你存储的实际字符串值Load Failed:
1. 临时查询转换(无需修改表结构)
直接在SELECT语句中使用CASE完成映射:
SELECT CASE STATUS WHEN 'Loaded' THEN 1 WHEN 'Partially Loaded' THEN 2 WHEN 'Load Failed' THEN 3 -- 可加ELSE兜底处理未定义的状态值,例如 ELSE 0 END AS STATUS_INT FROM 你的表名;
2. 永久修改表存储数值类型
如果需要把字段永久替换为数值类型,可按以下步骤操作:
- 新增数值类型的目标字段
ALTER TABLE 你的表名 ADD STATUS_INT NUMBER(1);
- 批量更新新字段的取值
UPDATE 你的表名 SET STATUS_INT = CASE STATUS WHEN 'Loaded' THEN 1 WHEN 'Partially Loaded' THEN 2 WHEN 'Load Failed' THEN 3 END; -- 执行后记得提交事务:COMMIT;
- (可选)确认数据无误后,可删除原STATUS字段,重命名新字段为原字段名:
ALTER TABLE 你的表名 DROP COLUMN STATUS; ALTER TABLE 你的表名 RENAME COLUMN STATUS_INT TO STATUS;
内容的提问来源于stack exchange,提问作者Raja Gudipudi
相关产品推荐
相关产品推荐

