如何在SQL Server中执行where子句?我一直遇到非常奇怪的错误。例如,这有效:
>>> cursor.execute('SELECT * FROM SalesRawData WHERE title IS NULL')
但是这个错误:
>>> cursor.execute('SELECT * FROM SalesRawData WHERE title="asdf"')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pymssql.pyx", line 464, in pymssql.Cursor.execute (pymssql.c:7491)
pymssql.ProgrammingError: (207, "Invalid column name 'asdf'.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error:
Check messages from the SQL Server\n")
我不明白该错误,因为我将列指定为title
,并且值应为“ asdf”,但似乎认为我将列设置为asdf?这是怎么回事?
更新:看来这是使其正常工作的唯一方法:
SELECT * FROM SalesRawData WHERE Title = N'asdf'
知道为什么我必须在开始时添加N
吗?
答案 0 :(得分:3)
您的WHERE子句在正确的位置,但是SQL Server使用单引号而不是双引号来指定字符串值。双引号用于指定表或列的名称,这就是为什么SQL在查找名为asdf
的列而不是将其视为值的原因。正确的SQL将是SELECT * FROM SalesRawData WHERE title='asdf'
。