Синтаксическая ошибка Postgres при использовании «like» в одиночной кавычке

Я получаю синтаксическую ошибку в запросе PostgreSQL. Я работаю над проектом, разработанным в YII1 , я получаю сообщение об ошибке

CDbCommand не выполнил инструкцию SQL: SQLSTATE [42601]: Синтаксическая ошибка: 7 ОШИБКА: синтаксическая ошибка в или рядом с «s» LINE 1: ... OT NULL И sub_heading, например «% женщин и голоса детей%».

Как вы можете видеть выше, я использую like оператор в одинарных кавычках, а в строке есть еще одна одинарная кавычка ( Children's ). Поэтому PostgreSQL бросает мне ошибку. Пожалуйста, предоставьте мне решение избежать строки.

Всего 3 ответа


Вы можете избежать одиночной кавычки в строке, используя другую одиночную кавычку (т. '' Вместо ' . Обратите внимание, что это два символа, а не один символ:

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

Вы должны использовать функцию format чтобы построить инструкцию SQL, используя заполнитель %L для шаблона.


Я решил эту проблему, заменив одну цитату двойными кавычками, используя PHP. Вот код. Существует переменная $ var со значением Women and Children's Voices . Я заменяю эту единственную цитату, используя функцию str_replace (). $var = str_replace("'", "''", $var);


Есть идеи?

10000