C# SQL:更改表';s数据列-保持列顺序
我被分配了更改SQL表中某些数据列的任务(如果需要的话,使用SQL CE Server 3.5) 表格由数百个逗号分隔的Excel文本文档填充 代码尝试确定列的数据类型,并创建表 稍后,我需要能够返回并说,“不,这个包含‘Y’和‘N’的列需要更改为布尔类型,而不是字符类型。” 我已经找到了关于如何(删除一列并插入新列)的信息,但是我是否能够将表的列恢复到以前的列索引值,如“insert At Index=X”C# SQL:更改表';s数据列-保持列顺序,c#,sql,C#,Sql,我被分配了更改SQL表中某些数据列的任务(如果需要的话,使用SQL CE Server 3.5) 表格由数百个逗号分隔的Excel文本文档填充 代码尝试确定列的数据类型,并创建表 稍后,我需要能够返回并说,“不,这个包含‘Y’和‘N’的列需要更改为布尔类型,而不是字符类型。” 我已经找到了关于如何(删除一列并插入新列)的信息,但是我是否能够将表的列恢复到以前的列索引值,如“insert At Index=X” 无法通过ALTER TABLE在特定索引处添加列。SQLServerManagemen
无法通过ALTER TABLE在特定索引处添加列。SQLServerManagementStudio和VisualStudioPremium等工具以及数据库工具都可以做到这一点。但至少Visual Studio通过一种变通方法实现了这一点:
问候。有几种方法可以解决这个问题
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)转换为日期时间会有点困难您只需在适当的位置更改列,就不必担心排序问题
ALTER TABLE myTable
ALTER COLUMN myColumn Boolean
我之所以这么做,是因为客户希望他的表的顺序与Excel CSV文件中的顺序相同。这对我来说似乎也没什么意义。好吧,但是你可以维持订单要求,但是有一个标识列+表中的所有列,包括你自己的ID。这是我害怕的答案。我这样做还不足以证明VS Premium DB的合理性。如果没有那么频繁,您可以通过Management Studio手动执行。嗯。。。第三个选项是我最初打算做的,但不确定如何完成我开始的工作。在C#?@jp2code中,可以通过Visual Studio在T-SQL语句中执行类似的操作吗。您可以像正常情况一样使用
SqlCommand.ExecuteNonQuery
执行DDL。然而,它可能需要两个声明。一个用于转换数据,另一个用于更改。不一定是按那个顺序。这很简单,可以测试:数据转换失败。
需要先删除所有数据吗?哦——是的,bool只接受0或1——对不起,应该提到这一点。您可以在视图中很容易地将其表示为Y或N,或者稍后再选择。顺便说一句,对于大多数解释,0=false或no,1=true或yes。