У меня есть запрос в mySQL, который предназначен для возврата поисковых терминов, которые используются на нашем сайте.Да, это для облака тегов, и да, я знаю, что это кефаль :):
У нас есть страница администратора, где администраторы могут просматривать условия поиска и исключать их из показа в облаке.Эти слова попадают в таблицу "badWords".Мы получили некоторые термины, такие как «foo% 25252525252520bar», и у нас возникают проблемы с их исключением.
В псевдокоде запрос для получения поисковых терминов для облака:
SELECT * FROM `searchTerms` WHERE `word` NOT IN ( SELECT `word` FROM `badWords` )
Это работает нормально, если только в одном из условий, возвращаемых из подзапроса, нет%.Есть ли способ избежать всего подзапроса?Я пытался сделать
replace( SELECT `word` FROM `badWords`, '%', '\%' )
... но это, по-видимому, не синтаксически правильно.
Я могу сделать два запроса, если это необходимо, но подумал, есть ли способ сделать этокак есть.
Спасибо!
=============================
ОБНОВЛЕНИЕ: пока закрываем, так как я думаю, что ошибка находится в другом месте.Отзовитесь, как только я точно узнаю, но не хочу, чтобы люди тратили время на ответы на вопрос здесь, если это не правильный вопрос ...
Проголосовали оба ответа, полученных до сих пор.Спасибо, ребята.
==================================== *
ОБНОВЛЕНИЕ 2: вздох Бессмысленно ... не могу закрыть его: \
=============================
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ: похоже, выход из значения - не проблема.Страница администратора передает значение в URL, прежде чем оно будет добавлено в таблицу badWords.При передаче значения через URL оно изменяется.То, что добавлено в badWords, это на самом деле "foo% 25252525252520bar" (есть на одну последовательность меньше "25").Если я вручную обновлю значение в badWords и добавлю обратно пропущенное «25», оно будет работать как положено.Так что не нужно ничего заменять или убегать.Мне просто нужно правильно исправить эти значения URL.
=============================