【发布时间】:2013-08-25 11:14:04
【问题描述】:
仅供参考,我使用的是 SQL Azure。
我注意到,当我尝试根据车牌和该车牌的状态从表中选择数据时,如果状态为“IN”,则不会返回任何结果。我意识到“IN”这个词在 SQL Server 中是保留的;但是,我将其包含在查询的引号中。我目前处于测试阶段,表中只有一条记录,其牌照为 287YGB,状态为 IN。
如果我按如下方式编写查询,我将一无所获。
SELECT MakeModel, CitizenID, VehicleID FROM tblVehicles WHERE tblVehicles.Lisence = '287YGB' AND tblVehicles.PlateState = 'IN'
如果我以这种方式编写查询,我将返回我的结果。但这还不够好。
SELECT MakeModel, CitizenID, VehicleID FROM tblVehicles WHERE tblVehicles.Lisence = '287YGB'
最后,如果我以这种方式编写查询,我会得到表中唯一的一行。
SELECT MakeModel, CitizenID, VehicleID FROM tblVehicles
从这些测试中,我可以看到最后一个 where 参数导致了问题。我假设这是因为保留了“IN”这个词。有没有办法解决这个问题?
【问题讨论】:
-
确定数据没有一些前导空格或周围其他不可见字符?搜索
'IN'没有问题 -
如果包含在引号中 - 你不应该遇到这个问题...
-
IN是保留关键字。'IN'是一个字符串。如果值周围有刻度,则它不是保留关键字。 -
那是巧合。如果您的第一个查询有效,那么您的第二个查询也应该有效,第三个查询也应该有效。
-
SELECT CAST(tblVehicles.PlateState AS VARBINARY(10)) FROM tblVehicles返回什么?
标签: sql sql-server tsql