如何在SQL Server中将列的数据类型从整数更改为文本?

时间:2015-01-09 00:08:31

标签: sql-server delphi delphi-7 alter-table

我需要将数据库列从整数更改为字符串/文本,但我不知道如何去做。

此列用于存储标识号,但最近ID格式已更改,现在ID也包含ASCII字符(因此,通过此更改,新ID不能存储为整数)。

我正在更新的应用程序是用Delphi 7编写的,并使用odbcexpress组件作为SQL Server库。

是否可以使用ALTER TABLE?或者是否需要将数据作为字符串复制到新列,删除旧列,并将列重命名为旧名称?

你能提供一个如何做到这一点的例子吗?我对SQL Server的工作方式不是很熟悉。

谢谢!

1 个答案:

答案 0 :(得分:6)

ALTER TABLE正是您想要做的。

您的SQL可能如下所示:

ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn VARCHAR(20) NOT NULL;

请注意,如果您有引用此列的列,则还必须更新这些列,通常是暂时删除外键约束,进行更改,然后重新创建外键约束。

不要忘记更改依赖或下游的任何内容,例如存储过程中的任何变量或Delphi代码。

与评论相关的其他信息(谢谢,全部):
alter column操作将保留数据,因为它将隐式转换为新类型。只要varchar的宽度足以容纳最大的转换值,int就会转换为varchar而没有问题。为了保证整体的安全性,我经常使用varchar(11)或更大的值来处理最宽的int值: 20亿。