如何在不影响现有列宽的情况下更改列数据类型

Posted

技术标签:

【中文标题】如何在不影响现有列宽的情况下更改列数据类型【英文标题】:How to Alter Column Data Type Without Affecting Existing Column Width 【发布时间】:2009-09-04 14:53:38 【问题描述】:

我有一个数据类型为 varchar 的现有列需要更改为 nvarchar,但是我不想更改 (5) 的现有列宽。

如果我使用下面的语句

ALTER TABLE MYTABLE ALTER COLUMN MYCOLUMN NVARCHAR (5) NOT NULL

我最终得到一列 nvarchar 数据类型,但列宽为 (10)!

如果我在不指定列宽的情况下尝试以下语句

ALTER TABLE MYTABLE ALTER COLUMN MYCOLUMN NVARCHAR (5) NOT NULL

然后我得到一个宽度为 (2) 的 nvarchar 列

如何在不影响现有列宽的情况下简单地将列数据类型从 varchar 更改为 nvarchar?

谢谢!

【问题讨论】:

【参考方案1】:

NVARCHARUNICODE UCS-2 类型,按照设计,其宽度将是 VARCHAR 的两倍。

请仔细阅读 SQL Server 联机丛书,了解 SQL 数据类型之间的区别。我已经添加了link。

【讨论】:

以上是关于如何在不影响现有列宽的情况下更改列数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改现有组件文件的情况下通过插件将日期类型更改为下拉列表

如何在数据表中设置某些列宽的列宽

如何在不更改现有数据位置的情况下添加新的 SQL Server 分区范围来容纳未来的数据?

拆分数据数据类型后的Spark RDD如何在不更改数据类型的情况下拆分

如何在不知道列类型的情况下获取列的值

如何在不影响性能的情况下抽象 SIMD 代码以处理不同的数据类型