Что означает, если что-то не так с оператором LIKE?

Как исправить ошибку "pq: got 1 parameters but the statement requires 0" при использовании константы запроса SQL в коде на Go с драйвером "github.com/lib/pq"?
  • 10 июля 2024 г. 19:22
Ответы на вопрос 2
Если что-то не так с оператором LIKE, это может означать, что вы неправильно использовали синтаксис оператора LIKE в вашем SQL запросе. Например, вы можете использовать неправильные символы подстановки (%) или передавать неверные значения для сравнения. В этом случае, вам необходимо проверить ваш SQL запрос и убедиться, что он корректен.

Чтобы исправить ошибку "pq: got 1 parameters but the statement requires 0", при использовании константы запроса SQL в коде на Go с драйвером "github.com/lib/pq", необходимо убедиться, что вы правильно используете плейсхолдеры в вашем запросе. 

Например, если у вас есть следующий запрос:

```go
const selectQuery = "SELECT * FROM users WHERE id = $1"
rows, err := db.Query(selectQuery, 1)
```

Замените его на следующий:

```go
const selectQuery = "SELECT * FROM users WHERE id = $1"
rows, err := db.Query(selectQuery)
```

Таким образом, вы передаете аргументы в функцию Query, а не в сам запрос SQL.
tldr: WHERE a LIKE concat('%',$1,'%') либо конкатенировать к параметру на стороне приложения. 

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