仅供参考,我使用的是SQL Azure。
我注意到当我尝试从基于牌照的表格中选择数据时,如果状态为“IN”,则我没有得到任何结果。我意识到SQL服务器中保留了“IN”这个词;但是,我在查询中的引号内包含它。我目前正处于测试阶段,表中只有一条记录,其中有一个287YGB的lisence牌和状态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”这个词。有办法解决这个问题吗?
答案 0 :(得分:0)
试试这个
SELECT MakeModel, CitizenID, VehicleID FROM tblVehicles WHERE tblVehicles.Lisence = '287YGB' AND LTRIM(RTRIM(tblVehicles.PlateState)) = 'IN'
答案 1 :(得分:0)
保留字通常只会在您将它们用作字段名称时引起问题,在这种情况下,您需要用括号(“[]”)来包装它们以消除问题。我将保证你的PlateState中有一些垃圾,所以你需要先调整它(LTRIM(RTRIM(PlateState))='IN')或者使用Like'%IN%'代替,这将返回你期望的结果。