我有一个表测试(id,名称)。
我需要插入值,如:用户的日志,'我的用户',客户的。
insert into test values (1,'user's log');
insert into test values (2,''my users'');
insert into test values (3,'customer's');
我得到一个错误,如果我运行上述任何语句。
如果有任何正确的方法,请分享。我不想要任何事先准备好的声明。
是否可以使用sql转义机制?
我有一个表测试(id,名称)。
我需要插入值,如:用户的日志,'我的用户',客户的。
insert into test values (1,'user's log');
insert into test values (2,''my users'');
insert into test values (3,'customer's');
我得到一个错误,如果我运行上述任何语句。
如果有任何正确的方法,请分享。我不想要任何事先准备好的声明。
是否可以使用sql转义机制?
当前回答
在postgresql中,如果你想插入带有' In it '的值,那么你必须给额外的'
insert into test values (1,'user''s log');
insert into test values (2,'''my users''');
insert into test values (3,'customer''s');
其他回答
根据PostgreSQL文档(4.1.2.1.;字符串常量):
若要在字符串常量中包含单引号字符,请写入 两个相邻的单引号,例如:“戴安的马”。
另请参阅standard_conforming_strings参数,该参数控制是否使用反斜杠进行转义。
当我使用Python在PostgreSQL中插入值时,我也遇到了一个问题:列“xxx”不存在。
我在wiki.postgresql中找到了原因:
PostgreSQL对此只使用单引号(即WHERE name = 'John')。双引号用于引用系统标识符;字段名,表名等(即WHERE "last name" = 'Smith')。 MySQL使用'(重音标记或反标记)来引用系统标识符,这显然是非标准的。
这意味着PostgreSQL只能对字段名、表名等使用单引号。所以你不能在值中使用单引号。
我的情况是:我想插入值“它是adj的sb和它是adj的sb的差异”到PostgreSQL。
我是如何解决这个问题的:
我把' with '和' with '替换掉。因为PostgreSQL的值不支持双引号。
所以我认为你可以使用以下代码来插入值:
insert into test values (1,'user’s log');
insert into test values (2,'my users');
insert into test values (3,'customer’s');
在postgresql中,如果你想插入带有' In it '的值,那么你必须给额外的'
insert into test values (1,'user''s log');
insert into test values (2,'''my users''');
insert into test values (3,'customer''s');
如果你需要在Pg内部完成工作:
to_json(值)
https://www.postgresql.org/docs/9.3/static/functions-json.html#FUNCTIONS-JSON-TABLE
你可以使用postrgesql chr(int)函数:
insert into test values (2,'|| chr(39)||'my users'||chr(39)||');