使用双引号插入到Postgres DB中不起作用

时间:2018-10-01 10:52:26

标签: sql postgresql insert

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

我的插入语句如下:

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

将“ senderid”视为20位数字,将“ text”视为用户所说的话。

现在,如果来自用户的文本不包含撇号字符,则以上语句将起作用。但是,有时文本的确包含撇号。在这种情况下,插入无法正常工作。

例如,如果用户说“ Let's chat”,那么我的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插入中使用双引号,那么考虑到不一定总是有撇号,我该如何转义撇号?

2 个答案:

答案 0 :(得分:0)

请尝试以下操作:如果需要单引号,则需要使用两次单引号

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

答案 1 :(得分:0)

1。我可以在SQL插入中使用双引号吗?

不,您不能,因为双引号表示postgrey中的列名,这是为什么当您使用双引号时sql引擎找到该列的原因

您可以使用

(col1, col2) VALUES (value1, value2)