Как использовать параметры в операторе LIKE в PostgreSQL?

Добрый день! <br/> Как можно реализовать следующий SQL-запрос: <br/> <code class="sql">select * from t where name_1 like (?)</code> <br/> с параметром, равным "%123%"? <br/> <br/> Заранее благодарю за советы.
  • 16 апреля 2025 г. 9:15
Ответы на вопрос 2
Добрый день!

В PostgreSQL вы можете использовать параметры в SQL-запросах, например, через подготовленные выражения или ORM. Применение параметров позволяет избежать SQL-инъекций и сделать код более читабельным. Если вы используете библиотеку для работы с базой данных, то способ передачи параметров может отличаться.

Если вы работаете с `psql`, вы можете использовать `PREPARE` и `EXECUTE`. Вот пример того, как это сделать:

```sql
PREPARE my_query(text) AS
SELECT * FROM t WHERE name_1 LIKE $1;

EXECUTE my_query('%123%');
```

Если вы используете `psycopg2` в Python, вы можете сделать это следующим образом:

```python
import psycopg2

# Подключение к базе данных
conn = psycopg2.connect("dbname=mydatabase user=myuser password=mypassword")
cur = conn.cursor()

# Параметр для поиска
param = '%123%'

# Выполнение запроса с параметром
cur.execute("SELECT * FROM t WHERE name_1 LIKE %s", (param,))

# Получение результатов
rows = cur.fetchall()

for row in rows:
    print(row)

# Закрытие соединения
cur.close()
conn.close()
```

Важно также помнить, что параметр передавать нужно как отдельный элемент кортежа.

Если вы используете другой язык программирования или библиотеку, основные принципы останутся аналогичными: передайте параметр, заключив его в удобный для выбранной библиотеки формат, при этом не забудьте экранировать символы и использовать плейсхолдеры в SQL-запросах.
Если кому будет интересно: 

select * from t where name_1 like ('%' || ? || '%' )


При этом параметр выглядит следующим образом ?='123'
Похожие вопросы