SQL SERVER:字符串或二进制数据将被截断.为nvarchar

use*_*219 1 sql t-sql sql-server

我正在尝试插入下表:

在此输入图像描述

但由于某种原因,我不能在slabel1字段中插入超过250个字符,即使它的大小为500.每次发生这种情况时我都会收到以下错误:

字符串或二进制数据将被截断.该语句已终止.

我不懂为什么.

Jam*_*ard 7

结果显示列的长度(以字节为单位),而不是可存储的字符数.您使用的列是nvarchar列,因此字符将占用2个字节而不是1个,因此在您的情况下(500/2)=最多250个字符.

这将显示差异,我们有两列,每列可以容纳50个字符,但nvarchar列的长度为100

CREATE TABLE [#text]
(
  [Text] VARCHAR(50),
  [NText] NVARCHAR(50)
)

SELECT COL_LENGTH( 'tempdb..#Text' , 'Text' ) [Varchar_Length],
       COL_LENGTH( 'tempdb..#Text' , 'NText' ) [NVarchar_Length]


DROP TABLE [#text]
Run Code Online (Sandbox Code Playgroud)

结果是:

Varchar_Length | NVarchar_Length
50             | 100
Run Code Online (Sandbox Code Playgroud)