版本:SQL Server 2016
--创建数据库(字段大小为3)
CREATE TABLE [dbo].[test] ([a] nvarchar(3))
--插入长度超过3的字符串,报错。
INSERT INTO test VALUES('1111111111');
--[Err] 22001 - [SQL Server]String or binary data would be truncated.
--插入长度超过3的字符串 (成功插入,没报错!!!)
INSERT INTO test VALUES('1 ');
--查看数据库该记录是'1 ',发现长度超过3的空格被截断了。
有人知道这是什么机制?翻了官方文档没找到。
标签:
可能sqlserver的内部机制吧,就像sqlserver查询不区分大小写一样
可能在机制上来说,末尾空格就是直接截取不报错吧。另外需要注意的是nvarchar虽然是长度可变,但是最大长度约束是在你定义的3,超过3就错误。