标志字段从旧表转换为新表

时间:2015-04-06 18:41:31

标签: sql sql-server tsql

我是SQL Server的新手(目前正在使用2012版本)。我的问题如下。

我正在重构一个旧的数据库架构,其中true个字段false / varchar(1)个标志(即' Y' - > ; true,' N' - > false)。我目前正在进行深度重组,因此每个旧架构表都会被新架构表替换。在这种情况下,标志现在存储在bit字段中,我需要一个脚本来复制旧表中包含的所有值,执行标志转换(需要时)并将它们插入新表中。

最好和最快的方法是什么?

我的想法是:

  • 仅选择'Y'个有价值的记录,并将其插入新表中,位字段为1

  • 仅选择'N'个有价值的记录,并将其插入新表中,位字段为0

我确信T-SQL提供了一种更强大的方法来完成此转换。感谢您的每一个建议。

2 个答案:

答案 0 :(得分:2)

如何使用case声明?

insert into newtable(flagcol, . . .)
    select (case when oldflag = 'Y' then 1 else 0 end), . . .
    from oldtable;

答案 1 :(得分:2)

使用INSERT INTO语句

从旧表中选择使用Case新表
INSERT INTO NewTable (flagNewTableCol,othercolumns)
SELECT CASE WHEN flagColunn = 'Y' THEN 1
            ELSE 0
       END, othercolumns
FROM OldTable