2014-09-13 2 views
1

У меня возникла проблема с запросом sql. Если однословный sql-запрос может обнаружить строку, но если я добавлю несколько слов внутри строки, это не покажет никаких результатов.LIKE mysql search не работает с CONCAT

SELECT * FROM rules WHERE keyword LIKE CONCAT('%','$message','%') 

вход 1 (показать результаты)

$message = "ASK" 

вход 2 (не показывают результатов)

$message = "I WANT TO ASK" 

Пожалуйста совет. Спасибо.

+0

Ваше выражение 'CONCAT' обрабатывает' $ message' как строковый литерал. Попробуйте удалить одинарные кавычки вокруг '' $ message'' внутри 'CONCAT'. – dasblinkenlight

+0

он не будет показывать никаких результатов либо с использованием ввода 1 и 2 –

+0

Можете ли вы поделиться своими данными образца, или еще лучше - [sqlfiddle] (http://sqlfiddle.com)? – Mureinik

ответ

1

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

Если это так, то вы имеете получить этот результат с помощью функции INSTR:

SELECT * FROM rules WHERE INSTR('$message', keyword) > 0; 

Хотя

SELECT * FROM rules WHERE '$message' LIKE CONCAT('%', keyword, '%'); 

будет работать в большинстве случаев тоже, это есть ограничение, что ключевое слово musn't не содержит подстановочных знаков для оператора LIKE: % и _. INSTR не имеет этого ограничения.

+0

спасибо! да благословит вас бог! –

+1

Добро пожаловать! – VMai

Смежные вопросы