克服sql server中的保留字“IN”

时间:2013-08-22 15:49:04

标签: sql sql-server tsql

仅供参考,我使用的是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”这个词。有办法解决这个问题吗?

2 个答案:

答案 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%'代替,这将返回你期望的结果。