如何在SQL中更改列的数据类型,但仅针对列标题后的所有行?

时间:2013-02-01 17:53:35

标签: sql sql-server sql-server-2008

我有一个名为TITLE的varchar(10)列。除了第一行(包含列标题)之外,列的其余部分恰好是所有整数,因此我想将数据类型更改为int。

ALTER TABLE X
ALTER COLUMN TITLE int

转换第一行时遇到错误,第一行是列标题:“将varchar值'TITLE'转换为数据类型int时转换失败。

那么,如何转换除列标题以外的所有行的数据类型?

4 个答案:

答案 0 :(得分:1)

简短的回答是,您不能在单个SQL列中混合数据类型。数据类型需要与排序,构建索引等一致。

您可以使用另一个表来存储各种列标题,或同一个表中的另一列。

使用NoSQLMongoDB解决方案可能是一种方法,具体取决于您要存储的数据类型。这些解决方案使您可以更灵活地使用模式,每个文档甚至可以不同。

答案 1 :(得分:0)

对不起,您不能在同一列上拥有多种数据类型。

Data types

答案 2 :(得分:0)

你没有。列不是可以各自具有自己类型的独立变量的集合。列中的所有内容都具有相同的类型。如果您尝试这样做,那么您的架构可能不应该是它应该是什么。如果您发布更多详细信息,您可以通过改进的架构获得一些答案。

答案 3 :(得分:0)

您不能在列中混合'n'match数据类型。您可以使用VarBinaryXML等模糊数据类型,并根据需要进行解释。

OTOH,您可以使用sp_addextendedproperty来存储列标题和其他无关的内容。