繁体   English   中英

当插入的值大于列长度时,将错误的值插入SQL Server表

[英]Incorrect value inserted into SQL server table when inserted value is greater than column length

情况:

我有一个现有的旧表[dbo]。[值],位于SQL Server 2017上。

在此表中,我有3列。

  • int tableid(主键)
  • 字符(8)代码
  • 字符(7)说明

代码和描述都是自定义数据类型,但都只是char(8),char(7),没有其他逻辑。

行动

如果我在此表中插入列代码的插入值大于8个字符的值,则会在该列中插入*。

没有错误或警告。

我查看了触发器,约束,策略,表的创建脚本,自定义数据类型。 我无法找到任何逻辑说明截断设置值= *

在将值保存到表之前,sql server的哪一部分会修改值?

如果您还使用了不正确的数据类型并从int隐式转换,则会看到此信息。

CREATE TABLE #T(C CHAR(8))

INSERT INTO #T VALUES (1111111111);

SELECT *
FROM #T

这是记录的行为

解。 使用字符串

INSERT INTO #T VALUES ('1111111111');
/*String or binary data would be truncated.*/

这是传统行为 ,不太可能改变

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM