Как выбрать значение с экранированным апострофом в MySql? - PullRequest
1 голос
/ 04 февраля 2011

В моей таблице есть следующее значение:

Когда я не знаю, что делать

Обратите внимание, что апостроф уже экранирован.Теперь я хочу выбрать это значение из этой таблицы, используя следующую строку SQL:

SELECT * FROM wp_wpsc_productmeta WHERE meta_value = 'Когда я не знаю, что делать'

Я получаю 0 строк.Когда я изменяю строку SQL на эту:

SELECT * FROM wp_wpsc_productmeta WHERE meta_value LIKE 'Когда я надеваю%'

, я получаю правильный набор результатов.Итак, мой вопрос: как мне написать строку SQL, чтобы я мог выбрать значение из таблицы, если в этом значении уже есть апостроф с экранированием?

Пожалуйста, не отвечайте, что мне следует использовать параметры,Я бы очень хотел выяснить ответ, используя метод, который я пытаюсь.Спасибо за вашу помощь!

Ответы [ 3 ]

2 голосов
/ 04 февраля 2011

Вам нужно будет избежать обратной косой черты и цитаты:

'I don\\\'t know';

Почему?

Проблема в том, что косая черта и кавычка также являются специальными символами в вашем языке программирования. Поэтому, когда вы печатаете:

'I don\'t know';

База данных видит 'I don't know', которого не существует. Если, с другой стороны, вы дважды выходите из своей строки следующим образом:

'I don\\\'t know';

... в базу данных отправляется результат 'I don\'t know', что вам и нужно.

2 голосов
/ 04 февраля 2011

Если строка в базе данных на самом деле «Когда я не знаю, что делать», с включенной обратной косой чертой, то для ее поиска вам понадобится использовать оператор.

SELECT * FROM wp_wpsc_productmeta WHERE meta_value = 'When I Don\\''t Know What To Do'
Или
SELECT * FROM wp_wpsc_productmeta WHERE meta_value = 'When I Don\\\'t Know What To Do'

1 голос
/ 04 февраля 2011

Какой язык вы используете? Я думаю, что язык, вероятно, интерпретирует escape-обратную косую черту как побег для своей выгоды, поэтому вам может потребоваться сделать это дважды, чтобы база данных тоже видела это:

'I don\\\'t know';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...