【问题标题】:Insert into a new Table in SQL gives error在 SQL 中插入新表会出错
【发布时间】:2023-03-17 11:50:01
【问题描述】:

为什么会出现错误?

--Q1    

CREATE table  Aorders (
 Id  INT IDENTITY NOT NULL,
 CreatedDate Date NOT NULL,
 BillingCountry varchar Not Null,
 MerchId int Not null,
 OrderStatus varchar Not null,
);

--Q2    

select * from Aorders

--Q3 edited as suggested here but still get an error 

插入订单(CreatedDate、BillingCountry、MerchId、OrderStatus) VALUES ('2001-01-01', 'Israel', 5 ,'Approved');

【问题讨论】:

  • 您用于列 CreatedDate 的日期格式不正确。

标签: sql sql-server sql-insert


【解决方案1】:

您必须定义 varchar 列的长度,例如:

CREATE table  Aorders (
 Id  INT IDENTITY NOT NULL,
 CreatedDate Date NOT NULL,
 BillingCountry varchar(100) Not Null,
 MerchId int Not null,
 OrderStatus varchar(100) Not null,
); 

来自char and varchar (Transact-SQL)

当 n 未在数据定义或变量声明中指定时 语句,默认长度为1

【讨论】:

    【解决方案2】:

    在执行insert 时,最佳做法是明确列出所有列并使用标准日期格式:

    INSERT INTO Aorders (CreatedDate, BillingCountry, MerchId, OrderStatus)
        VALUES ('2001-01-01', 'Israel', 5 ,'Approved');
    

    您的具体错误是因为您在 VALUES() 列表中有四个值,但表中有五列。

    【讨论】:

    • Gordon Linoff,您忘记包含 CreatedDate 列。我代表你这样做了。由于第一列是标识,因此不需要在 INSERT 查询中包含该列。
    • 试过.. INSERT INTO Aorders (CreatedDate, BillingCountry, MerchId, OrderStatus) VALUES ('01.01.01', 'Israel', 5 ,'Approved');仍然出现相同的错误... Msg 8152, Level 16, State 14, Line 12 字符串或二进制数据将被截断。该语句已终止。完成时间:2019-08-03T18:57:55.7867677+03:00
    • @pnetaly,看看 Gordon 的日期格式和你的区别
    • @AnkitBajpai 我用 '2001-01-01' 试过了,还是一样的错误:(
    • 您使用的是哪种 DBMS 产品?
    【解决方案3】:

    您没有正确完成查询。我认为您希望 ID 自动递增,但您尚未声明。进行如下更改:

    CREATE table Aorders ( Id INT IDENTITY NOT NULL
                          ,CreatedDate Date NOT NULL
                          ,BillingCountry varchar Not Null
                          ,MerchId int Not null
                          ,OrderStatus varchar Not null);
    

    现在输入您插入的查询。并确保文档中的日期格式正确。

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多