当我尝试在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'附近的语法不正确。
我不确定我做错了什么。有没有人见过这个?任何建议
答案 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”开头的名称。