字符串文字
'
通过将单引号加倍-> ''
来转义单引号是标准方法,当然可以:
'user's log' -- incorrect syntax (unbalanced quote)
'user''s log'
在旧版本中,或者如果您仍然使用standard_conforming_strings = off
或运行,或者通常情况下,如果在字符串前面加上E
声明Posix转义字符串语法,则还可以使用反斜杠进行转义\
:
E'user\'s log'
反斜杠本身会被另一个反斜杠转义。但这通常不是可取的。
如果必须处理多个单引号或多个转义符,则可以避免在PostgreSQL中用美元引号引起来的字符串引用地狱:
'escape '' with '''''
$$escape ' with ''$$
为了进一步避免美元报价之间的混淆,请为每对报价添加唯一的令牌:
$token$escape ' with ''$token$
可以嵌套任何数量的级别:
$token2$Inner string: $token1$escape ' with ''$token1$ is nested$token2$
如果$
字符在客户端软件中应具有特殊含义,请注意。您可能还必须转义它。标准PostgreSQL客户端(例如psql或pgAdmin)不是这种情况。
这对于编写plpgsql函数或临时SQL命令非常有用。但是,当可以进行用户输入时,它不能减轻使用准备好的语句或其他方法来防止在应用程序中进行SQL注入的需要。@Craig的答案还有更多。更多细节:
Postgres内部的值
在处理数据库内部的值时,有几个有用的函数可以正确地引用字符串: