Postgresql在where子句中转义单引号[重复]

Posted

技术标签:

【中文标题】Postgresql在where子句中转义单引号[重复]【英文标题】:Postgresql escape single quote in where clause [duplicate] 【发布时间】:2016-12-06 15:48:54 【问题描述】:

所以我正在尝试运行这样的脚本:

select id
from owner 
where owner.name = "john's"

我收到此错误:ERROR: column "john's" does not exist

我也试过这样:where owner.name = 'john\'s',但它不起作用

有人知道我如何运行这样的查询吗?

【问题讨论】:

试试双单引号 = "john ' 's"? e'john\'s' 应该可以解决问题。 (e 前缀允许在字符串文字中使用 c 样式的反斜杠引用(和其他东西)) 单引号在 Postgres 中环绕字符串文字。要在字符串文字中转义单引号,请使用两个单引号:'John''s' 字符串文字中的双单引号,即where owner.name = 'john''s' 如果一切都失败了,请阅读手册:postgresql.org/docs/current/static/… 【参考方案1】:

双引号时可以转义单引号。 例如:

= 'john''s'

【讨论】:

你能提一下如何转义双引号吗? 有没有办法在单引号内也使用像 $1 这样的参数?【参考方案2】:

试试这个

select id
from owner 
where owner.name = (E'john\'s')::text

更新: 我们可以使用这个语句来转义大部分字符

select id
from owner 
where owner.name = (E'john\character you want to escape's')::text

【讨论】:

以上是关于Postgresql在where子句中转义单引号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中转义单引号 ( ' )? [复制]

如何在 MySQL 中转义单引号

在 SQL Server 中转义单引号

在 Javascript 中转义单引号

如何在单引号字符串中转义单引号

如何在 Sybase 中转义单引号