如何将现有列迁移到SQL中的新列,但是值是否映射到新数据类型?

时间:2017-10-10 13:28:52

标签: sql sql-server

我的表格中有bit列。我想添加一个新的int列(枚举)。没问题。不过,我想迁移bit列中的数据,以映射到新的integer列。

具体来说,我希望位列中的任何行(1)在新列中映射到int值2.

bit列中的任何错误(0),我希望映射到int值1.

对此逻辑语法的任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

UPDATE myTable 
SET NewCol = 
    CASE oldCol 
        WHEN True THEN 2 
        WHEN False THEN 1
    END 

答案 1 :(得分:1)

正如评论中所述,您可以在迁移脚本中使用CASE子句来提供您可能想要实现的任何映射逻辑。请参阅official documentation

示例语法:

CASE 
    WHEN column = [value_to_map] THEN [mapped_value]
    WHEN column = [value_to_map] THEN [mapped_value]
    ...
ELSE
    [fallback_value]
END AS [some_alias]

我希望这会对你有所帮助。