SQL Server中ORDER BY条件表达式报错:‘=’附近语法不正确
解决SQL Server中ORDER BY布尔表达式的语法错误
刚接触SQL Server遇到这种语法差异很正常,别担心!你的问题出在SQL Server对ORDER BY子句的语法限制上——它不像一些其他数据库(比如MySQL)那样支持直接用布尔表达式([CountryName] = 'India')作为排序依据,因为SQL Server里布尔值不能直接被当作数值(0或1)来处理,所以才会报“‘=’附近语法不正确”的错误。
给你两种简单的解决方法,都能实现把India排在最前面,其余国家按名称升序排列的需求:
方法1:使用CASE语句(兼容所有SQL Server版本)
把布尔表达式转换成数值,当条件满足时返回1,不满足返回0,然后按这个数值降序排序:
SELECT [CountryName] FROM [tablename] ORDER BY CASE WHEN [CountryName] = 'India' THEN 1 ELSE 0 END DESC, [CountryName] ASC
方法2:使用IIF函数(SQL Server 2012及以上版本可用)
IIF是CASE的简化写法,语法更简洁:
SELECT [CountryName] FROM [tablename] ORDER BY IIF([CountryName] = 'India', 1, 0) DESC, [CountryName] ASC
这两种写法都能达到你想要的效果,选哪种看你的SQL Server版本就行~
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

