Sql server 2012 Msg 156,15级,状态1,第4行关键字“between”附近语法不正确

Sql server 2012 Msg 156,15级,状态1,第4行关键字“between”附近语法不正确,sql-server-2012,Sql Server 2012,在SQL Server 2012中尝试使用between运算符时,我不断收到一条错误消息 select * from Sales.Store where SalesPersonID>283 order by Name between 'g' and'j' desc; 错误: 信息156,第15级,状态1,第4行 关键字“between”附近的语法不正确 我不确定我做错了什么。有人见过这个吗?任何建议SQL Server不允许您按可使用的布尔值排序 select * from Sales.

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

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

信息156,第15级,状态1,第4行 关键字“between”附近的语法不正确


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

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

select *
from Sales.Store
where SalesPersonID>283
order by IIF(Name between 'g' and'j', 0,1);
但是between可能没有你想要的语义

如果要在先排序的组中包含以j开头的所有名称,可以使用类似于“[g-j]]”的IIFName,0,1

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

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

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

您想做什么?按布尔结果排序?我正在搜索表中的商店名称,我只需要以G-J开头的商店名称。因此,这是完全错误的。它应该在哪里?谢谢。我把between移到where子句,它就起作用了。从Sales.Store中选择*,其中SalesorSonid>283且名称介于“g”和“j”之间,按名称描述订购;你应该使用like而不是between。