我是SQL Server的新手(目前正在使用2012版本)。我的问题如下。
我正在重构一个旧的数据库架构,其中true
个字段false / varchar(1)
个标志(即' Y' - > ; true,' N' - > false)。我目前正在进行深度重组,因此每个旧架构表都会被新架构表替换。在这种情况下,标志现在存储在bit
字段中,我需要一个脚本来复制旧表中包含的所有值,执行标志转换(需要时)并将它们插入新表中。
最好和最快的方法是什么?
我的想法是:
仅选择'Y'
个有价值的记录,并将其插入新表中,位字段为1
仅选择'N'
个有价值的记录,并将其插入新表中,位字段为0
我确信T-SQL提供了一种更强大的方法来完成此转换。感谢您的每一个建议。
答案 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