尝试使用 UPDATE 命令为表中的字符串字段添加前缀。出于某种原因,我得到了



异常(exception),即使我的数据长度很容易适应该领域。

使用 SQL Server 2008 R2 标准版和 SSMS 2008 R2。

模板:Learner 是一个 nvarchar(60)

模板:Learner 是一个 nvarchar(30),使用 60 字节,如 sp_help 所示

select LEN('Aaaaaaaa' + LEFT(learner, 52)) myLen from Template order by myLen desc
>>> max len = 31

update Template set learner = 'Aaaaaaaa' + LEFT(learner, 52)
>>> String or binary data would be truncated.

update Template set learner = 'Aaaaaaaa' + LEFT(learner, 52)
>>> String or binary data would be truncated.

update Template set learner = CAST('Aaaaaaaa' + LEFT(learner, 52) AS NVARCHAR(60))
>>> String or binary data would be truncated.

而以下工作:
SELECT CAST('Aaaaaaaa' + LEFT(learner, 52) AS NVARCHAR(60)) FROM Template

最佳答案

您可以尝试通过以下方式忽略此消息

SET ANSI_WARNINGS OFF
update ...
SET ANSI_WARNINGS ON

关于sql - 字符串或二进制数据将被截断。 -- 即使长度比字段长度短,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12828465/

10-09 20:03