使用SQL Server的无效SQL WHERE子句

时间:2018-06-22 23:22:22

标签: sql sql-server

如何在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吗?

1 个答案:

答案 0 :(得分:3)

您的WHERE子句在正确的位置,但是SQL Server使用单引号而不是双引号来指定字符串值。双引号用于指定表或列的名称,这就是为什么SQL在查找名为asdf的列而不是将其视为值的原因。正确的SQL将是SELECT * FROM SalesRawData WHERE title='asdf'