【问题标题】:Postgres syntax error when using 'like' in single quote在单引号中使用“like”时出现 Postgres 语法错误
【发布时间】:2018-11-13 06:02:15
【问题描述】:

我在 PostgreSQL 查询中遇到语法错误。我正在做一个在YII1 开发的项目,我遇到了一个错误

CDbCommand 未能执行 SQL 语句:SQLSTATE[42601]: 语法错误:7 错误:“s”处或附近的语法错误第 1 行:...OT NULL AND 子标题,例如“%Women and Children's Voices%”。

正如您在上面看到的,我在单引号中使用了like 运算符,而在字符串中还有另一个单引号(Children's)。所以 PostgreSQL 给我一个错误。请为我提供一个逃避字符串的解决方案。

【问题讨论】:

  • 那么您的查询在哪里?只是显示错误没有帮助..
  • '%Women and Children''s Voices%'。或者可能是反斜杠而不是双引号;我不记得哪个 postgres 更喜欢。
  • 嗨@Shawn,感谢您的回复,我做了同样的事情并且它有效,我用双引号替换了单引号并且它有效

标签: sql postgresql yii syntax-error


【解决方案1】:

您可以使用另一个单引号转义字符串中的单引号(即,'' 而不是 '。请注意,这是两个 ' 字符,而不是单个 " 字符):

sub_heading LIKE '%Women and Children''s Voices%'
-- Here -----------------------------^

【讨论】:

  • 嗨@Mureinik,感谢您的回答,实际上值 Women and Children 来自变量,所以我无法在查询中更改它,所以我替换了单使用 PHP 用双引号引用。
【解决方案2】:

您应该使用format 函数来构造SQL 语句,使用%L 占位符作为模式。

【讨论】:

    【解决方案3】:

    我通过使用 PHP 将单引号替换为双引号解决了这个问题。这是代码 有一个变量 $var,其值为 Women and Children's Voices。我使用 str_replace() 函数替换了那个单引号。 $var = str_replace("'", "''", $var);

    【讨论】:

    • 为什么不使用占位符?自己做这件事太疯狂了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2019-01-03
    • 2022-07-18
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多