Использование LIKE для SQL сервера с Python и списком значений - PullRequest
0 голосов
/ 14 июля 2020

У меня есть df с клиентами и продуктами, и я должен получить всю информацию об этих элементах с сервера SQL, но мне нужно выполнить синтаксический анализ с помощью подстроки, потому что DateBase содержит путь продукта, например:

productpath:

fruits/apple
vegetables/tomato

Список моих продуктов выглядит так, но настоящий список содержит более 1000 значений:

df['prod']= ['apple', 'orange', 'tomato']

Поэтому я решил использовать этот код:

sql_sales = """
SELECT
    date,
    client,
    productpath,
    cost
FROM all_sales
WHERE 
    client == %(c1)s
    AND productpath LIKE '%%(prod)s%'

"""

И я У вас ошибка при использовании LIKE с этой частью '%% (prod) s%' вот так:

недостаточно аргументов для строки формата, который невозможно откатить

Без LIKE-части работает

1 Ответ

1 голос
/ 14 июля 2020

Один метод использует подзапрос:

. . . 
where . . . and
      exists (select 1
              from string_split('apple,orange,tomato', ',') s
              where all_sales.productpath like concat('%', s.value, '%')
             )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...