【问题标题】:PostgreSQL where clause condition check with value that contains single quotePostgreSQL where 子句条件检查,其值包含单引号
【发布时间】:2021-07-04 09:13:35
【问题描述】:

假设我在 Postgres DB 中有一个 employees 表,我必须在其中插入一个员工姓名的值 john's

由于它是 Postgres,我将通过将单引号 ' 加倍来转义它们 -> ''

所以john's 会变成john''s

现在,当我使用 select query 选择特定的行/实例时,我必须再次加倍引号。所以要选择值john''s 我必须写'john''''s' 我的查询变成-

select * from employees where name = 'john''''s'

这是最好的方法吗?要么 对于这些特定类型的数据(包含引号),是否有任何替代数据插入和选择过程的方法?有什么建议吗?

【问题讨论】:

  • "既然是 Postgres,我会转义单引号" - 这与“成为 Postgres”无关。这是 SQL 标准所要求的。

标签: sql postgresql string-constant


【解决方案1】:

不,您不必将转义引号加倍:

select * 
from employees 
where name = 'john''s'

【讨论】:

  • 谢谢。但它不适用于我的数据库。我必须使用上述方法。我正在使用“PostgreSQL 13.0”。
  • @ahmedshahriar:这绝对有效:dbfiddle.uk/… 如果它不适合你,那么有些事情你没有告诉我们
  • 谢谢。你是对的。实际上,我正在使用 psycopg2 和 mogrify 函数从 JSON 执行批量插入,并且列类型是“字符变化”。所以我的猜测是,每当我将 JSON 转换为字节字符串以使用 mogrify 插入数据时(在添加单个转义引号之后),它都会再次添加一个额外的引号。这就是为什么我必须在查询中使用双引号。
猜你喜欢
  • 2018-02-06
  • 2013-02-28
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多