Msg 156,Level 15,State 1,Line 4关键字'between'附近的语法不正确

时间:2016-01-10 16:43:26

标签: sql-server-2012

当我尝试在SQL Server 2012中使用between运算符时,我不断收到错误消息。

select *
from Sales.Store
where SalesPersonID>283
order by Name between 'g' and'j' desc;

错误:

  

Msg 156,Level 15,State 1,Line 4
  关键字'between'附近的语法不正确。

我不确定我做错了什么。有没有人见过这个?任何建议

1 个答案:

答案 0 :(得分:2)

SQL Server不允许您按可以使用的布尔值排序

select *
from Sales.Store
where SalesPersonID>283
order by IIF(Name between 'g' and'j', 0,1);

但是between可能没有你想要的语义。

如果您想在首先订购的组中包含以j开头的所有名称,则可以使用IIF(Name LIKE '[g-j]%',0,1)

但是在您的评论之后,这就是您需要的

select *
from Sales.Store
where SalesPersonID>283 AND Name LIKE '[g-j]%';

您不应该使用between,因为它只包含完全“j”的名称,而不是所有以“j”开头的名称。