首页 > 解决方案 > 将 LIKE for SQL Server 与 Python 和值列表一起使用

问题描述

我有一个包含客户端和产品的 df,我必须从 SQL Server 获取有关这些项目的所有信息,但我必须使用子字符串进行解析,因为 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-part 它正在工作

标签: pythonsqlsql-server

解决方案


一种方法使用子查询:

. . . 
where . . . and
      exists (select 1
              from string_split('apple,orange,tomato', ',') s
              where all_sales.productpath like concat('%', s.value, '%')
             )

推荐阅读