把表A 数据插入表B时提示 ‘将截断字符串或二进制数据。 语句已终止’ 。如何找到被截断数据或字段。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把表A 数据插入表B时提示 ‘将截断字符串或二进制数据。 语句已终止’ 。如何找到被截断数据或字段。相关的知识,希望对你有一定的参考价值。

字段太多一个个排除不现实。
不想修改表B结构

你是否确认两个链表的数据类型是相同的,或者是char型,插入到int类型的表中呢?加入将char *型、double型数据插入到int 或 char型表中,就有可能发生你上面所说的问题。 参考技术A 不修改结构 修改字段就行了 使用字段类型转换
比如现在是日期型的数据 你可以改成to_char(参数,"yyyymmdd") 类似这样的修改就行了
具体要修改成什麽类型 要使用什麽函数 网上都有
参考技术B 长度

尽管数据看似合适,但插入时“字符串或二进制数据将被截断”

【中文标题】尽管数据看似合适,但插入时“字符串或二进制数据将被截断”【英文标题】:"String or binary data would be truncated" upon insert despite the data seemingly fitting 【发布时间】:2017-01-23 13:06:41 【问题描述】:

我有一张这样的桌子:

CREATE TABLE Customers
(CustomerID int Identity (1,1) NOT NULL PRIMARY KEY,
customerName varchar (50),
Address varchar (255),
Phone int NOT NULL,
Email varchar,
Gender varchar,
Age int, 
);

我尝试像这样插入到这个表中:

Insert into Customers (customerName, Address, Phones, Email, Gender, Age)
Values ('Anosa Seunge', 'Keskuskatu 200', 358-3-4180, 'ijiosd@ao.com', 'Male', 19),
        ('Jihad Christian', '305 - 14th Ave. Suite 3B', 358-1-3688, 'jihado@ao.com', 'Female', 29);

得到了这个错误:

Msg 8152, Level 16, State 14, Line 4
String or binary data would be truncated.
The statement has been terminated.

【问题讨论】:

您希望我们告诉我们哪些值比您尝试放入的字段长吗? 不匹配:您创建了Phone,但尝试填充Phones。这些是实际的命令吗? 很确定 358-3-4180 将被解释为 -3825,因为电话号码是一个 int 字段。您也从未为电子邮件或性别VARCHAR 字段指定长度,使其长度为 1。 您没有为 varchar 列电子邮件和性别指定长度。这意味着它将默认为 1,并且您的电子邮件更长。始终指定 varchar 列的长度。 另外,将电话号码存储为int 是非常可疑的。您永远不会想要将电话号码相加或对它们进行其他数学运算。几乎总是,它们应该存储为字符串(如果您认为它们应该只包含数字,请使用适当的检查约束) 【参考方案1】:

您的 EmailGender 字段的长度为 1,这可能是您想要的 Gender(虽然可能不是基于您的插入语句)但肯定不是 Email

你想要这样的东西:

CREATE TABLE Customers
(CustomerID int Identity (1,1) NOT NULL PRIMARY KEY,
customerName varchar (50),
Address varchar (255),
Phone int NOT NULL,
Email varchar(50),
Gender varchar(50),
Age int, 
);

【讨论】:

真的吗?我认为没有大小的varchar 相当于varchar(255) @ivan_pozdeev 遗憾的是,没有,在某些 DBMS 中它们的默认值更高,但在 SQL Server 中默认为 1 更可笑的是默认长度会根据使用情况发生变化。对于列和变量,它是 1,但参数是 30。谈论混淆......简单的解决方案是明确的。 @SeanLange - 不,不适用于参数。除了CAST and CONVERT 之外,其他地方都是 1。但我同意这很荒谬。 相关:***.com/questions/2241238/…, ***.com/questions/359257/…

以上是关于把表A 数据插入表B时提示 ‘将截断字符串或二进制数据。 语句已终止’ 。如何找到被截断数据或字段。的主要内容,如果未能解决你的问题,请参考以下文章

怎么解决过程中提示:将截断字符串或二进制数据?

SQL Server字符串或二进制数据将被截断

尝试插入时,错误、字符串或二进制数据将被截断

尽管数据看似合适,但插入时“字符串或二进制数据将被截断”

sql怎么插入日期类型数据报将截断字符串或二进制数据

SQL Server 字符串或二进制数据将被截断