SqlServer按指定顺序进行排序

文章介绍了使用SQL进行数据查询时的两种排序方法:一种是基于CHARINDEX函数结合RTRIM和CAST对特定列值在预设字符串中的位置进行排序;另一种是在WHERE子句中使用IN操作符和ID结合CONVERT进行排序。这两种方法都涉及到字符串处理和条件过滤。

 select * from tabname where 1=1   order by CHARINDEX(RTRIM(CAST(列名 as NCHAR)),'北京,上海,广州') 

select * from tabname where id in(1,2,3,4,5)   order by charindex(','+convert(varchar,id)+',','2

SQL Server 中,`ORDER BY` 子句用于对查询结果进行排序。你可以根据列值、表达式、别名、位置序号等来指定排序规则。SQL Server 默认使用数据库排序规则(collation),但你也可以显式地为排序操作指定排序规则(collation)。 以下是一些常见的使用方式,包括如何在 `ORDER BY` 中指定排序规则。 --- ### 示例 1:基本排序(默认排序规则) ```sql SELECT * FROM Employees ORDER BY LastName; ``` **解释:** - 按 `LastName` 列进行默认排序(使用数据库或列定义的排序规则)。 --- ### 示例 2:指定排序方向(ASC / DESC) ```sql SELECT * FROM Employees ORDER BY Salary DESC; ``` **解释:** - 按薪资降序排列。 --- ### 示例 3:按多个字段排序 ```sql SELECT * FROM Employees ORDER BY Department ASC, Salary DESC; ``` **解释:** - 先按部门升序排列,同一部门内按薪资降序排列。 --- ### 示例 4:按别名排序 ```sql SELECT FirstName + ' ' + LastName AS FullName FROM Employees ORDER BY FullName; ``` **解释:** - 使用别名 `FullName` 进行排序。 --- ### 示例 5:使用列序号排序(不推荐) ```sql SELECT FirstName, LastName, Salary FROM Employees ORDER BY 3 DESC; ``` **解释:** - 按查询结果的第 3 列(即 `Salary`)降序排序。 --- ### ✅ 示例 6:在 `ORDER BY` 中指定排序规则(Collation) ```sql SELECT * FROM Employees ORDER BY LastName COLLATE Latin1_General_BIN; ``` **解释:** - 使用 `COLLATE` 关键字强制指定排序规则,此处使用的是 `Latin1_General_BIN`(二进制排序)。 - 这可以确保排序不依赖于数据库或列的默认排序规则。 - 适用于需要跨数据库或跨语言排序的场景。 --- ### 示例 7:结合 `CASE` 表达式自定义排序逻辑 ```sql SELECT * FROM Employees ORDER BY CASE WHEN Department = 'HR' THEN 1 WHEN Department = 'IT' THEN 2 ELSE 3 END ASC; ``` **解释:** - 自定义排序顺序,HR 部门优先,IT 次之,其他最后。 --- ### 示例 8:对中文字段排序指定排序规则 ```sql SELECT * FROM Employees ORDER BY ChineseName COLLATE Chinese_PRC_CI_AS; ``` **解释:** - 对中文字段使用指定排序规则进行排序,`Chinese_PRC_CI_AS` 表示简体中文、不区分大小写、区分重音。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值