Python Pyodbc - SQL 的语法无效

Python Pyodbc - Invalid Syntax with SQL

我正在使用 Pyodbc 从我们的内部数据库中提取一些数据,并且正在使用以下 SQL,它在 SQL Server Management Studio 中完美运行。

'SELECT GrantInformation.GrantRefNumber, Count(GrantResearchTopic.PrimaryInd) AS CountOfPrimaryInd 
FROM GrantInformation 
LEFT JOIN GrantResearchTopic ON GrantInformation.GrantRefNumber = GrantResearchTopic.GrantRefNumber 
WHERE ((GrantResearchTopic.PrimaryInd)='True')  
GROUP BY GrantInformation.GrantRefNumber;'

出于某种原因,如果我删除 WHERE 语句,SQL 拉动会起作用,但如果我保留它,我会得到 'INVALID SYNTAX',尽管正如我所说 SQL 在SQL短信。

我尝试在 true 周围使用双引号,但出现以下错误:

ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'True'. (207) (SQLExecDirectW)")

有什么想法吗?

编辑: 问题已解决。我没有在 SQL 语句中使用双引号,因此它无法识别 True 语句周围的单引号。使用 1 就像不使用引号一样有效,并且在语句周围使用双引号也有效,因为它随后识别了 'True' 周围的单引号。谢谢大家

尝试删除语句末尾的分号

我解决了一个类似的问题,将 'True' 替换为 1(不带引号)。

您的整个 SQL 语句应该用双引号而不是单引号引起来,然后真实的内容可以保留在单引号中。

'True'(用单引号或双引号括起来的 True)是一个字符串,不能与布尔值进行比较。 在 sql 中,使用 1 或 TRUE(均不带引号且 TRUE 不区分大小写)作为布尔值 true 将起作用。