首页 > 解决方案 > 使用双引号插入 Postgres DB 不起作用

问题描述

我正在编写一个记录与 Facebook Messenger 机器人交互的函数。用户所说的任何内容都记录在 PostgreSQL 数据库中。

我的插入语句如下所示:

INSERT INTO interactions (fbid,date,time,event) VALUES ('senderid','2018-10- 
   01','11:15:48','text')

将“senderid”视为 20 位数字,将“文本”视为用户所说的任何内容。

现在,如果来自用户的文本不包含撇号字符,则上述语句有效。但是,有时文本确实包含撇号。在这些情况下,插入不起作用。

例如,如果用户说“让我们聊天”,那么我的 SQL 如下所示:

INSERT INTO interactions (fbid,date,time,event) VALUES 
     ('senderid','2018-10-01','11:15:19','Let's Chat!')

我收到以下错误:

Query result: error: syntax error at or near "s"

我知道这是因为我需要避开撇号。我已经尝试通过在我的插入语句中使用双引号来解决这个问题,如下所示:

INSERT INTO interactions (fbid,date,time,event) VALUES ("senderid","2018-09- 
   28","10:50:07","Let's chat")

但是当我这样做时,我收到以下错误:

ERROR:  column "senderid" does not exist

所以我有两个问题:

  1. 我可以在 SQL 插入中使用双引号吗?
  2. 如果我不能在 SQL 插入中使用双引号,我将如何转义撇号字符,记住可能并不总是撇号?

标签: sqlpostgresqlinsert

解决方案


请尝试以下操作:您需要使用单引号两次以防撇号,例如 let's will be let''s

INSERT INTO interactions (fbid,date,time,event) VALUES ('senderid','2018-09- 
   28','10:50:07','Let''s chat')

推荐阅读