Sql server 插入查询、字符串或二进制数据将被截断

Sql server 插入查询、字符串或二进制数据将被截断,sql-server,ssms,sql-insert,Sql Server,Ssms,Sql Insert,为什么这种情况不断发生?前两种数据类型是Int。“游戏”是DateTime。最后一个是VarChar。为什么执行不成功 用作列数据类型时,varchar的默认长度为1 varchar[(n | max)]可变大小字符串数据 在数据定义或变量声明中未指定n时 语句,默认长度为1。如果在使用时未指定n 在CAST和CONVERT函数中,默认长度为30 所以需要为列设置最大长度。乙二醇 use tempdb go drop table if exists JaretsSchedule go cr

为什么这种情况不断发生?前两种数据类型是
Int
。“游戏”是
DateTime
。最后一个是
VarChar
。为什么执行不成功


用作列数据类型时,
varchar
的默认长度为1

varchar[(n | max)]可变大小字符串数据

在数据定义或变量声明中未指定n时 语句,默认长度为1。如果在使用时未指定n 在CAST和CONVERT函数中,默认长度为30

所以需要为列设置最大长度。乙二醇

use tempdb
go
drop table if exists JaretsSchedule
go

create table JaretsSchedule
(
   FieldId int,
   TeamID int,
   Games datetime,
   TeamsPlaying varchar(255)
)

go
insert into JaretsSchedule(FieldId,TeamID,Games,TeamsPlaying)
values (1,1,'2012-01-20 10:00:00','Roadrunnersv.s.Cheetahs')

因为,您已超过字段的最大大小

ALTER TABLE JaretsSchedule ALTER COLUMN TeamsPlaying nvarchar(1000);

值(1,1,
——不要将数字括在单引号中。问题和显示表的
CREATE
语句,作为文本,而不是屏幕截图。同时,还应将查询和错误消息作为文本而不是图像包含在内。删除图像。
varchar
列的大小是多少?可能是您需要的值想要插入的内容太大,无法放入其中。这似乎有点规范化问题。为什么有一个varchar列包含两个团队的名称?您已经在一个列中包含了TeamID。为什么不添加第二个列,如OpponentID。然后,您拥有每个团队的ID,并且在提取数据时查询名称。这不仅仅是sim卡普勒,你有能力改变一个团队的名字。