Пользуешься ? в sql создайте » вокруг параметра

#sql #mariadb #mariasql

Вопрос:

Я пытаюсь создать такой запрос:

 SELECT * FROM table_name WHERE column_name LIKE %?%
 

Ошибка:

Ошибка: ER_PARSE_ERROR: У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на наличие правильного синтаксиса для использования рядом со словом » %» » %» в строке 1

Как избежать двух апострофов?

Это работает:

 SELECT * FROM table_name WHERE column_name LIKE ?
 

но тогда мне понадобилось бы точное совпадение.

Комментарии:

1. Вам нужны одинарные кавычки вокруг шаблона.

Ответ №1:

Я подозреваю, что вы хотите:

 WHERE column_name LIKE CONCAT('%', ?, '%')
 

Тем не менее, я бы посоветовал вам добавить подстановочные знаки в приложение и просто использовать:

 WHERE column_name LIKE ?
 

Комментарии:

1. Спасибо за ваш ответ, @gordon. Конкат работает нормально. Можете ли вы рассказать немного больше о том, что вы имеете в виду, добавляя подстановочные знаки в приложение?

2. @Не здесь . . . В коде, отправляющем параметр, поставьте '%' в начале и в конце прямо в параметре.

3. Ha! Это умно, @Гордон. В чем было бы преимущество перед конкат? Просто скорость?

4. @Nothere . . . Это упрощает логику запроса. Но у меня нет твердого мнения на этот счет.