可以在SQL Server中将CHAR(10)列更改为VARCHAR或INT吗?

时间:2014-05-05 23:17:45

标签: sql sql-server database constraints alter

有人在我们的数据库中创建了一个列,最初只允许使用10位数的电话号码(因此,使用了数据类型CHAR(10))。

我们现在正在尝试更改数据库以允许我们的系统无法处理的东西 - 具有可变长度的电话号码的国际号码。

最初,该数据库仅处理仅通过NANP号码的PBX请求(所有国际号码在到达平台之前都被转换为终止号码)。现在会有网络请求显示预翻译号码,我们没有资源(时间/人员)来做我们想要的事情,这将创建一个新表来处理前端,然后在后端表中创建关系。

我们的数据库被复制到另外三台服务器(一台在现场,两台在场外,在VPN上),过去这有时会给我们造成问题(所以我告诉)。此外,所有值当前都是10位数字,表格中有大约100,000条记录。重申一下,我们正在使用SQL Server(我相信2008年)。

我们是否可以使用VARCHAR语句将此数据类型更改为INTALTER,而不使用LOSING DATA,其次,我们是否可以在不关闭复制的情况下执行此操作?

此外,正确的代码是否是以下两个SQL命令之一,其中列名为DNIS

ALTER DNISConfig
ALTER COLUMN [DNIS] VARCHAR(50)

ALTER DNISConfig
ALTER COLUMN [DNIS] INT

1 个答案:

答案 0 :(得分:2)

你是对的:

ALTER TABLE DNISConfig  
 ALTER COLUMN [DNIS]  VARCHAR(50) NOT NULL

将列更改为VARCHAR。

我认为,电话号码不是INT,因此VARCHAR选项更可取。