列长度应足够时SQL Server截断错误

列长度应足够时SQL Server截断错误,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在SQLServer2008中有一个表 表名:tbl_设备 表结构: 柱型 col1 | nvarchar(200) 现在,当我尝试向其中插入数据时(它适用于较短的情况,但是),字符串数据很长,即 LEN函数是162 服务器仍会给出错误信息: Msg 8152, Level 16, State 4, Line 1 String or binary data would be truncated. Msg 8152,第16级,第4状态,第1行 字符串或二进制数据将被截断。 原因应该是什么 生

我在SQLServer2008中有一个表
表名:tbl_设备
表结构:

柱型 col1 | nvarchar(200) 现在,当我尝试向其中插入数据时(它适用于较短的情况,但是),字符串数据很长,即 LEN函数是162

服务器仍会给出错误信息:

Msg 8152, Level 16, State 4, Line 1 String or binary data would be truncated. Msg 8152,第16级,第4状态,第1行 字符串或二进制数据将被截断。
原因应该是什么

生成错误消息的字符串中有尾随空格,但它们不使用
len()
函数进行计数。

Nvarchar将每个字符存储在2个字节中。所以你的nvarchar(200)只能存储100个字符。一些视图以字符为单位列出长度,而其他视图以字节为单位列出长度

简单地说。有关其工作原理的详细信息,请参阅:


请提供复制代码,因为不应该存在此问题。您的代码有一个bug,需要查看它。您确定接收消息的是本专栏吗?此外,数据是否有尾随空格返回指定字符串表达式的字符数,不包括尾随空格。是否显示字符串的外观?是通过SQL插入还是在Management Studio的“编辑表”视图中插入?我的管理工作室一直在抛出这条消息,但原始SQL插入是可以的。@Damien_不相信这条消息,因为这是有史以来最无用的异常消息,因为它没有告诉哪列是sad。 Msg 8152, Level 16, State 4, Line 1 String or binary data would be truncated.