use*_*219 1 sql t-sql sql-server
我正在尝试插入下表:

但由于某种原因,我不能在slabel1字段中插入超过250个字符,即使它的大小为500.每次发生这种情况时我都会收到以下错误:
字符串或二进制数据将被截断.该语句已终止.
我不懂为什么.
结果显示列的长度(以字节为单位),而不是可存储的字符数.您使用的列是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)