sql - 字符串截断,ANSI_WARNINGS OFF

标签 sql string sql-server-2008 error-handling warnings

使用 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/

相关文章:

sql - oracle中列的层次总和

SQL 查询 : How to do multiple counts?(返回每个论坛的帖子数以及主题数)

sql - SQL Server 2016中order by子句中的单例多列

java - 使用Character.isLetter和Character.isDigit忽略数字、空格并读取字符串输入

java - 在 Java 8 中,用于连接的 '+' 运算符被 new StringBuilder() 取代

java - 从 jdbc-pool 到 SQL Server 2008 中特定表的最快验证查询是什么

SQL 代理作业 - "Run As"下拉列表为空

c# - 如何在 C# 中接收 SQL 消息?

sql - 如何取得三连胜

C编程局部字符指针