【发布时间】:2022-01-18 13:09:04
【问题描述】:
我正在使用 Pyodbc 从我公司的 Dynamics NAV 数据库中选择数据,到目前为止,它使用 Excel / microsoft 查询创建的选择字符串运行良好,但现在我想使用 WHERE 子句仅从特定的供应商。供应商 NO 是他们作为字符串存储在“Buy-from Vendor No_”列中的数字,当我尝试使用它时,我遇到了 SQL 查询的问题。该语句的简化版本如下所示:
'SELECT "Companyname A_S$Purchase Line"."Planned Receipt Date", "Companyname A_S$Purchase Line"."Vendor Item NO_", "Companyname A_S$Purchase Line".No_ FROM COMPANYDB.dbo."Companyname A_S$Purchase Line" "Companyname A_S$Purchase Line" WHERE ("Companyname A_S$Purchase Line"."Buy-from Vendor No_"="96100961") ORDER BY "Companyname A_S$Purchase Line"."Order Date" DESC'
这会导致以下错误:
pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name '96100961'. (207) (SQLExecDirectW)")
如果我用 %s 替换数字字符串并使用单引号插入数字,我会收到关于将 varchar 转换为 int 的错误,因为其中一个供应商 NO 高于 int 限制。
如果我尝试在 INT 数据列上使用 where 子句,它会起作用,所以我猜引号或双引号有问题?
感谢任何帮助。
最好的问候 马丁
【问题讨论】:
标签: python sql excel pyodbc dynamics-nav