Выполнение сырого опроса 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%'