2017-10-10 59 views
2

我在我的表中有一个bit列。我想添加一列int(一个枚举)。没问题。但是我想迁移bit列中的数据以映射到新的integer列。如何将现有列迁移到SQL中的新列,但值映射到新的数据类型?

具体而言,我想在比特列这是真的(1)在新的列被映射到int值2

任何分别为(0)在bit柱假任何行,我想映射到int值1.

任何帮助这种逻辑的语法将不胜感激。

+4

使用CASE表达式。 https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql – Leonidas199x

+0

谢谢 - 这就是我需要的。 – Marcus

+0

你使用的是MySQL还是MS SQL Server?不要标记不涉及的产品。 – jarlh

回答

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] 

我希望这可以帮助你。

+0

谢谢,这是比我的用户案例更清晰的官方文档 – Marcus

+0

我很高兴我可以帮忙@Marcus – YuvalHerziger

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

这读起来很好:) – Marcus

相关问题