【问题标题】:Insert query, string or binary data would be truncated插入查询、字符串或二进制数据将被截断
【发布时间】:2019-12-16 20:53:41
【问题描述】:

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

【问题讨论】:

  • VALUES (1, 1, -- 不要用单引号将数字括起来。
  • Edit 问题并将表格的CREATE 语句显示为 textnot 显示为屏幕截图。当您使用它时,还包括查询和错误消息作为 textnot 作为图像。删除图片。
  • varchar 列的大小是多少?可能是您要插入的值太大而无法放入其中。
  • 这似乎有点标准化问题。为什么有两个队名的varchar列?您已经在一列中有 TeamID。为什么不添加第二列,例如 OpponentID。然后你有每个团队的 ID,当你提​​取数据时你会查询名称。不仅如此简单,您还可以更改团队名称。

标签: sql-server ssms sql-insert


【解决方案1】:

因为,你已经超过了字段的最大大小,

ALTER TABLE JaretsSchedule ALTER COLUMN TeamsPlaying nvarchar(1000);

【讨论】:

    【解决方案2】:

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

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

    。 . .

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

    char and varchar (Transact-SQL)

    因此,您需要为该列设置一个最大长度。 EG

    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多