使用 SQL Server 2008 (R2)。 我在不同的数据库中有两个表(具有相同的列数和数据类型 - 但大小不同) 。我正在将值从一个表插入另一个表,但问题是源表有:nvarchar(200),而目标表有一个 nvarhchar(100) 类型的字段。 并且源表中有数据字段大于100个字符,所以报错:
*String or binary data would be truncated is thrown.*
我尝试使用
-- SourceServer is passed in at command prompt (batch)
SET ANSI_WARNINGS OFF
GO
INSERT INTO DestinationTable(col1, col2,...)
SELECT col1, col2, ...
FROM $SourceServer.dbo.SourceTable
SET ANSI_WARNINGS ON
GO
然而,这会抛出一个如下所示的错误:
INSERT 失败,因为以下 SET 选项设置不正确:“ANSI_WARNINGS”。请验证 SET 选项是否正确用于索引 View 和/或计算列上的索引和/或筛选索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。
”
关于如何解决这个问题有什么想法吗?
最佳答案
您可以自己截断数据:
insert into desttable(destcolumn)
select left(sourcecolumn, 100) from sourcetable
关于sql - 字符串截断,ANSI_WARNINGS OFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465197/