SQL Server 2012:将两个smallint布尔列合并为字符串列并删除原列
解决SQL Server 2012中合并布尔列的问题
嘿,我来帮你一步步搞定这个需求,在SQL Server 2012里完全可以轻松实现,咱们分三个核心步骤来操作:
1. 新增用于存储结果的字符串列
首先给你的表添加一个varchar类型的列,用来存放最终的颜色值,比如就叫Column_3(和你示例里的命名一致):
ALTER TABLE YourTable -- 把YourTable替换成你的实际表名 ADD Column_3 VARCHAR(10); -- 长度设10足够容纳所有颜色名称
2. 根据规则更新新列的值
用CASE表达式匹配两个smallint列的组合,精准对应你给出的赋值规则:
UPDATE YourTable SET Column_3 = CASE WHEN Column_1 = 0 AND Column_2 = 0 THEN 'blue' -- false false 对应blue WHEN Column_1 = 0 AND Column_2 = 1 THEN 'yellow' -- false true 对应yellow WHEN Column_1 = 1 AND Column_2 = 0 THEN 'red' -- true false 对应red ELSE 'unknown' -- 你没提到两个都是true(1和1)的情况,这里默认设为'unknown',你可以改成需要的默认值或NULL END;
小提醒:如果你的布尔列可能存在NULL值,记得在CASE里补充对应的判断,比如WHEN Column_1 IS NULL OR Column_2 IS NULL THEN 'null_case',避免遗漏特殊场景的数据。
3. 确认数据无误后删除旧列
等你验证新列的数据完全符合预期后,就可以删掉原来的两个smallint列了:
ALTER TABLE YourTable DROP COLUMN Column_1, Column_2;
这样操作完成后,你的表就只剩下存储颜色字符串的Column_3列啦,完全满足你的需求!
内容的提问来源于stack exchange,提问作者Niklas
相关产品推荐
相关产品推荐

