2015-10-20 3 views
0

Вот упрощенный запрос, который не работает.Concat select query with like% string%

SET @abc = CONCAT('%','string','%'); 

SET @query = CONCAT('SELECT * 
FROM table 
WHERE column LIKE ',@abc); 

PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

Мне нужно использовать CONCAT с SELECT, потому что в реальном запросе есть много других переменных.

Реальный запрос отлично работает, когда я использую некоторый простой COLUMN = А в предложении WHERE . Но ничего не работает, когда я пытаюсь использовать LIKE% хуг% ...

+0

Предположим, вы используете вместо '' string'' другое имя столбца? – lad2025

+0

Для вас требуется «динамический SQL» - http://stackoverflow.com/questions/190776/how-to-have- dynamic-sql-in-mysql-хранимая процедура –

ответ

1

Используйте его как этот

SET @abc = CONCAT('"%','string','%"'); 

SET @query = CONCAT('SELECT * 
FROM table 
WHERE column LIKE ',@abc); 

PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

Проверьте первую строку, я добавил ", чтобы показать, как @abc„% строки%“

+0

это решило вашу проблему? –