【问题标题】:Getting Error Column Does not exist in PostgreSQL获取错误列在 PostgreSQL 中不存在
【发布时间】:2020-05-12 07:55:17
【问题描述】:

我正在尝试填充数据库中的表,但收到该列不存在的错误。有人可以指导我哪里出错了。以下是我的查询:

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES  (Shire, Robert,  206-524-2422, 12/14/2017, AntiqueDesk,3000.00, 249.00, 329.00);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES  (Shire, Robert, 206-524-2422, 12/14/2017, ‘AntiqueDeskChair’, 500.00, 41.50, 541.50);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Goodyear,Katherine,206-524-3544, 12/15/2017, ‘DiningTableLinens’, 1000.00, 83.00, 1083.00);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Bancroft, Chris, 426-635-9788, 12/15/2017, Candles, 50.00, 4.16, 54.16);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Griffith, John, 206-524-4656, 12/23/2017, Candles, 45.00, 3.74, 48.74);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Shire, Robert, 206-524-2422, 1/5/2018, DeskLamp, 250.00, 20.75, 270.75);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Tierney, Doris, 425-635-8677, 1/10/2018, DiningTableLinens, 750.00, 62.25, 812.25);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Anderson, Donna, 360-538-3544, 1/12/2018, BookShelf, 250.00, 20.75, 270.75);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Goodyear, Katherine, 206-524-544, 1/15/2018, AntiqueChair, 1250.00, 103.75, 1353.75);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Goodyear, Katherine, 206-524-544, 1/15/2018, AntiqueChair, 1750.00, 145.25, 1895.25);

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES (Tierney, Doris, 425-635-8677, AntiqueCandleHolders , 350.00, 29.05, 379.05)

【问题讨论】:

  • 你需要用单引号包围字符串;否则数据库认为它们是列名。投票结束这是一个错字。
  • 日期也需要正确的格式和引用。
  • 表定义是什么,实际错误是什么?
  • 我添加了引号但仍然收到错误:错误:列“'shire'”不存在第 2 行:值('Shire','Robert',206-524-2422,12/ 14/2017,'Ant... ^ SQL 状态:42703 字符:95
  • 您好@SARAH,请注意您可以接受正确答案。我在您之前的问题中看到您的答案对您有所帮助,但您没有接受它们。您可以这样做:stackoverflow.com/help/someone-answers

标签: sql postgresql datatables populate


【解决方案1】:

您插入的所有值都需要在单引号之间,例如:

INSERT INTO Sales (LastName,FirstName,Phone,InvoiceDate,InvoiceItem,Price,Tax,Total)
VALUES  ('Shire', 'Robert',  '206-524-2422', '12/14/2017', 'AntiqueDesk', '3000.00', '249.00', '329.00');

它将起作用:https://dbfiddle.uk/?rdbms=postgres_9.4&fiddle=bdc47dea28c109aafb26aac1e8e5d856

【讨论】:

  • 这不一定是真的。假设最后三个值是某种数字类型是合理的,在这种情况下它们不需要引号。您的日期格式也取决于语言环境。最好使用通用的格式。
  • @JonathanWillcock 我不同意假设任何事情都是合理的......根据问题中的数据,这是可以回答的。这是对 OP 错误的答案......另外,单引号中的数值会发生什么?
  • @VBoka 我暗示如果您至少建议最后三个应该是数字,您的答案会更好。很可能它们实际上不是数据库中的数字(我们无法判断),但它们应该是。假设它们是,那么恕我直言,引用它们是不好的做法:首先它强制数据库进行不必要的解析;其次,它也是特定于语言环境的(例如,西欧语言环境使用“.”作为千位分隔符)。因此,虽然引用它们可能很有效,但仍应尽可能避免。
猜你喜欢
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多