我被分配了更改SQL表中某些数据列的任务(如果重要的话,使用Sql CE Server 3.5)。
这些表格是从数百个逗号分隔的Excel文本文档中填充的。
代码确定了列的数据类型并创建了表。
稍后,我需要能够回来并说:“不,这个带有'Y'和'N'的列需要更改为布尔类型而不是字符类型。”
我找到了有关如何Alter the Table(删除列并插入新列)的信息,但是我能够将表的列恢复为之前的列索引值,例如“插入索引= X“?
答案 0 :(得分:3)
无法通过ALTER TABLE在特定索引处添加列。像Sql Server Management Studio和Visual Studio Premium with Database工具这样的工具可以做到这一点。但至少Visual Studio通过一种解决方法来实现它:
如果您有可能,我会深深推荐Visual Studio Premiums DB项目。它的部署引擎可以自动为您处理。
答案 1 :(得分:1)
有几种方法可以解决这个问题。
第3个选项很棘手,因为您必须在更改之前更新值。 例如
Create table #temp (foo char(1), bar int)
Insert into #temp VALUES ('Y', 0)
Insert into #temp VALUES ('N', 1)
UPDATE #temp
SET foo = CASE WHEN foo = 'Y' THEN 1 ELSE 0 END
ALTER table #temp alter column foo bit
SELECT * FROM #temp
这种情况很容易。例如,将varchar(50)转换为日期时间会有点困难
答案 2 :(得分:1)
您可以只更改列,然后您不必担心订购它。
ALTER TABLE myTable
ALTER COLUMN myColumn Boolean
答案 3 :(得分:0)
有这样的“肮脏伎俩”:
但老实说,我从来没有这样做,因为你需要关心DB隐含的下一个索引。可能是我遗漏了一些东西,但为什么不在你自己的 ID上构建你的数据库关系,你可以完全控制它们。
问候。