@Makar_007

Что не так в LIKE?

Вот участок пргограммы, где объявлена константа SQL запроса
const sqlReq string = `SELECT a, b FROM someTable
WHERE a LIKE '%$1%'
LIMIT 20;`


В другом месте идёт запрос в БД
rows, err := db.Query(sqlReq, requestText)
	if err != nil {
		log.Println(err)
		return err
	}

И это выдаёт ошибку: pq: got 1 parameters but the statement requires 0
Драйвер "github.com/lib/pq"
Почему, и как убрать это?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
tldr: WHERE a LIKE concat('%',$1,'%') либо конкатенировать к параметру на стороне приложения.

'%$1%' - это строковой литерал, константа из 4 символов. Внутри литерала никто параметры искать и подставлять не будет. Поэтому в запросе не найдено ни одного места для параметров, а вы передаёте один параметр - что явная ошибка логики программы, об этом и выводится ошибка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы