gpt4 book ai didi

sql - 在 PostgreSQL 中插入带单引号的文本

转载 作者:行者123 更新时间:2023-11-29 11:03:51 26 4
gpt4 key购买 nike

我有一个表test(id,name)

我需要插入如下值:用户的日志“我的用户”客户的

 insert into test values (1,'user's log');
insert into test values (2,''my users'');
insert into test values (3,'customer's');

如果我运行上述任何语句,我会收到错误消息。

如果有任何正确执行此操作的方法,请分享。我不想要任何准备好的陈述。

是否可以使用sql转义机制?

最佳答案

字符串文字

通过将单引号 ' 加倍来转义 → '' 是标准方法,当然也有效:

<strike>'user's log'</strike>     -- incorrect syntax (unbalanced quote)
'user''s log'

请注意,普通单引号(ASCII/UTF-8 代码 39)不是反引号 `,它在 Postgres 中没有特殊用途(与某些其他 RDBMS 不同)并且不是双引号 ",用于标识符。

在旧版本中,或者如果您仍然使用 standard_conforming_strings = off 运行或者,通常,如果您在字符串前加上 E 以声明 Posix 转义字符串语法,您也可以使用反斜杠 \ 转义:

E'user\'s log'

反斜杠本身被另一个反斜杠转义。但这通常不是可取的。
如果您必须处理许多单引号或多层转义,您可以使用 dollar-quoted strings 避免在 PostgreSQL 中引用 hell 。 :

'escape '' with '''''
$$escape ' with ''$$

为进一步避免美元报价之间的混淆,为每对添加一个唯一的 token :

$token$escape ' with ''$token$

它可以嵌套任意数量的级别:

$token2$Inner string: $token1$escape ' with ''$token1$ is nested$token2$

注意 $ 字符在您的客户端软件中是否应该具有特殊含义。您可能还必须逃避它。对于标准的 PostgreSQL 客户端,如 psql 或 pgAdmin,情况并非如此。

这对于编写 PL/pgSQL 函数或临时 SQL 命令都非常有用。但是,当用户输入可能时,它不能减轻使用准备好的语句或其他一些方法来防止应用程序中的 SQL 注入(inject)的需要。 @Craig's answer有更多关于那个。更多详情:

Postgres 中的值

在处理数据库中的值时,有几个有用的函数可以正确地引用字符串:

关于sql - 在 PostgreSQL 中插入带单引号的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com