无法在 PostgreSQL 中添加文本值

问题描述

使用“”将数据插入文本列时出现错误,当我删除引号时,postgres 运行并添加值为 0 的列。

INSERT INTO tablex (dates,times,openp,high,low,closep,volume)
VALUES ("03/08/2021",2300,1680,1688.6,1685.1,12074);

列日期和时间都定义为文本列。其他列被定义为浮动。

当我使用上述代码运行查询时,出现以下错误

错误:“03/08/2021”列不存在
第 4 行:(“03/08/2021”、2300、1680、1688.6、1680、1685.1、12074);

当引号被移除时,列日期填充为 0 值

我该如何解决这个问题?

解决方法

INSERT INTO tablex
(dates,times,openp,high,low,closep,volume)
VALUES
('03/08/2021',2300,1680,1688.6,1685.1,12074);

试试这个,看看它是否有效。用单引号替换双引号。

,

单引号用于表示标记是字符串。这是 在整个 PostgreSQL 中的许多不同上下文中使用。

尝试用 '(单引号)包围您的字符串值并运行查询。

INSERT INTO tablex (dates,volume)
VALUES ('03/08/2021',12074);

这应该可以正常工作。

如果您需要在字符串中包含单引号,您可以通过插入两个连续的单引号(两个单引号,而不是双引号)来实现。

例如,您可以通过键入以下内容插入另一个带有嵌入式单引号的字符串:

INSERT INTO my_table(text) VALUES ('How''s it going?');

单引号字符串是分配或检查字符串值的适当方式。

,

您应该按照其他答案的建议使用单引号。

如果使用双引号,字符串将被视为标识符(表名或列名),因此会出现错误消息。没有任何引用,03/08/2021 被视为一个算术表达式,由于整数除法而产生 0。

您永远不应该在 text 列中存储日期。这使您无法在未引用的情况下获得有用的错误消息,并且稍后会导致问题和不一致。使用适当的数据类型 date