如何使用SQL IN子句作为参数

问题描述 投票:0回答:3

我试图使用python和pandas编写SQL IN子句并使用SQL分析器我发现以下内容从我的python程序传递到SQL服务器但没有返回数据 - 我认为它因格式错误而产生内部错误但我无法确定问题:

declare @p1 int
set @p1=NULL
exec sp_prepexec @p1 output,N'@P1 nvarchar(22)',N'
               SELECT [Date], [Person], [Amount]
               FROM [Logs].[dbo].[Results]
               WHERE [Date] >= GETDATE()-1 AND [Person] IN @P1',N'(''person1'', ''person2'')'
select @p1

谁能帮我辨别出什么问题?

sql python-3.x pandas
3个回答
0
投票

你可以在这里尝试一些不同的东西来诊断问题:

  1. 将查询保存到字符串变量,打印它,并对数据库运行它。
  2. 如果上面的步骤返回结果,则问题不在于您的查询。然后,我将检查您在python脚本/配置文件中的数据库配置。
  3. 如果db配置看起来正确,请添加try和except块以捕获有关发生的任何异常的更多详细信息。

如果您使用的是pyodbc,请查看以下链接,了解如何处理错误:

how to catch specific pyodbc error message


0
投票

我不相信你可以指定一个“IN”字符串作为这样的参数。然而,这将在sql server中工作。如果它不是sql找到类似的功能,或者自己编写。

AND [Person] IN (select * from string_split(@P1,','))

0
投票

经过一些审查和与dbadmin的快速聊天,我已经决定使用python来动态构建我的查询更容易。谢谢你的努力。

© www.soinside.com 2019 - 2024. All rights reserved.