-5

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

4

2 回答 2

0

尝试这个

SELECT MakeModel, CitizenID, VehicleID FROM tblVehicles WHERE tblVehicles.Lisence = '287YGB'  AND LTRIM(RTRIM(tblVehicles.PlateState)) = 'IN'
于 2013-08-22T15:58:04.920 回答
0

保留字通常仅在将它们用作字段名称时才会引起问题,在这种情况下,您需要用括号(“[]”)将它们括起来以消除问题。我几乎可以保证你的 PlateState 里面有一些垃圾,所以你需要先修剪它 (LTRIM(RTRIM(PlateState)) = 'IN') 或者改用 Like '%IN%',这将返回你期望的结果。

于 2013-08-22T15:58:59.683 回答