字符串或二进制数据将被截断。 - 即使柱长增加了

时间:2017-02-07 19:20:33

标签: sql-server

我遇到了SQL Server的问题,我需要将列放大,我认为我有,但是我不能把它放在比列的初始大小更大的数据中。

[columnName]最初是VARCHAR(50),我使用下面的命令将大小更改为VARCHAR(100)

ALTER TABLE dbo.tableName 
    ALTER COLUMN columnName VARCHAR(100) NOT NULL;

在表格设计视图中,我可以看到尺寸现在 100

尽管如此,我仍然得到错误

  

字符串或二进制数据将被截断。

尝试拟合超过50字节初始空间的数据时。

我错过了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

假设您的插入语句类似于:

insert into dbo.tableName (
    ...,
    columnName,
    ...
    )
select ...,
    columnName,
    ...
from dbo.anotherTableName

然后,使用此SQL查找您尝试插入该列的最大值:

select max(len(columnName)) as minVarcharLengthRequired
from dbo.anotherTableName

然后使用大于alter table语句的内容。