Выполнение сырого опроса django с использованием предложения ilike

У меня есть запрос, который по сравнению с ORM намного проще, используя прямой sql, Попытка выполнить его напрямую находится в части, связанной с предложением ilike, я пробовал разные способы, но все безуспешно

(добавил более короткий запрос, просто чтобы проиллюстрировать проблему)

cursor.execute("SELECT cc.name FROM customer cc WHERE name ilike '%%%s%%'", ["jan"])
cursor.execute("SELECT cc.name FROM customer cc WHERE name ilike %%%s%%", ["jan"])
cursor.execute("SELECT cc.name FROM customer cc WHERE name ilike %s", ["jan"])
cursor.execute("SELECT cc.name FROM customer cc WHERE name ilike '%%%s%%'", ["jan"])

ошибка:

LINE 1: SELECT cc.name FROM customer cc WHERE name ilike '%'jan'%'
LINE 1: SELECT cc.name FROM customer cc WHERE name ilike %'jan'%
LINE 1: SELECT cc.name FROM customer cc WHERE name ilike 'jan'
LINE 1: SELECT cc.name FROM customer cc WHERE name ilike '%'jan'%'

ilike эквивалентен __iexact поиску [Django-doc]:

Customer.objects.filter(name__iexact='jan')  # equivalent to name ILIKE jan

или если вы хотите искать строку, которая содержит 'jan', вы можете использовать __icontains [Django-doc]:

Customer.objects.filter(name__icontains='jan')  # equivalent to name ILIKE '%jan%'
Вернуться на верх