注册 登录
编程论坛 SQL Server论坛

怪事!插入一条超过字段长度的记录,数据库没有报错!

qq502100724 发布于 2021-01-08 09:35, 1137 次点击
版本: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的空格被截断了。

有人知道这是什么机制?翻了官方文档没找到。



[此贴子已经被作者于2021-1-8 09:42编辑过]

3 回复
#2
mywisdom882021-01-08 22:10
会自动切去后面空格的
#3
qq5021007242021-01-11 09:59
回复 2楼 mywisdom88
这是什么机制啊,有什么参考的文档吗
#4
mywisdom882021-01-13 13:04
char(3)
固定保存3个字符长度,当不够3个,后面会用空格填满。
varchar(3)
保存变长数据,保存实际长度,最多3个字符,会自动去除后面空格
1