标题:怪事!插入一条超过字段长度的记录,数据库没有报错!
只看楼主
qq502100724
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-11
结帖率:100%
已结贴  问题点数:10 回复次数:3 
怪事!插入一条超过字段长度的记录,数据库没有报错!
版本: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编辑过]

搜索更多相关主题的帖子: 插入 记录 报错 数据库 长度 
2021-01-08 09:35
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
会自动切去后面空格的
2021-01-08 22:10
qq502100724
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-11
得分:0 
回复 2楼 mywisdom88
这是什么机制啊,有什么参考的文档吗
2021-01-11 09:59
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:10 
char(3)
固定保存3个字符长度,当不够3个,后面会用空格填满。
varchar(3)
保存变长数据,保存实际长度,最多3个字符,会自动去除后面空格
2021-01-13 13:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504571-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.700584 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved