【问题标题】:Unable to add a text value in PostgreSQL [duplicate]无法在 PostgreSQL 中添加文本值 [重复]
【发布时间】:2021-07-19 11:50:11
【问题描述】:

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

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

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

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

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

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

我该如何解决这个问题?

【问题讨论】:

  • 您需要将表示日期的字符串放入单引号 - '03/08/2021'

标签: sql postgresql sql-insert string-constant


【解决方案1】:

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

尝试使用'(单引号)将您的字符串值括起来并运行查询。

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

这应该可以正常工作。

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:
      INSERT INTO tablex
      (dates, times, openp, high, low, closep, volume)
      VALUES
      ('03/08/2021', 2300, 1680, 1688.6, 1680, 1685.1, 12074);
      
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-21
        • 2018-07-24
        • 2021-08-18
        • 1970-01-01
        • 2019-01-02
        • 2020-10-26
        • 2020-02-23
        相关资源
        最近更新 更多