tsql - SQL 中的排序

标签 tsql sql-server-2008 sorting

我使用的是 SQL Server 2008。

我想使用 DetailRefNumber 对结果进行排序。但是,我无法实现像

这样的排序
2.1 
2.2 
2.3 
xxx
xxx
2.10
2.11
2.12

您能指导我该怎么做吗?

enter image description here谢谢。

最佳答案

如果 DetailRefNumber 始终 是一个数字,用点分隔,您可以向该表添加两个计算列,这基本上将该列分成两个单独的,数值:

alter table dbo.YourTable
  add RefNrMajor AS CAST(LEFT(DetailRefNumber, CHARINDEX('.', DetailRefNumber) - 1) AS INT) PERSISTED

alter table dbo.YourTable
  add RefNrMinor AS CAST(SUBSTRING(DetailRefNumber, CHARINDEX('.', DetailRefNumber) + 1, 999) AS INT) PERSISTED

现在您可以按这些新的数字列进行排序:

SELECT (columns)
FROM dbo.YourTable
ORDER BY RefNrMajor, RefNrMinor

关于tsql - SQL 中的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7014027/

相关文章:

sql - SQL 中的 Stuff 工作原理或 Stuff 逻辑和 XML 路径

sql-server - 在 SQL Server 中实现一对零或一关系

c# - Sql 查询帮助,接近 = 的语法错误

sql - 使用 nodes() 方法在 SQL 中展平分层 XML

sql-server-2008 - SQL : Auto Increment value during insert

algorithm - 插入排序与选择排序

iphone - 对字典数组进行排序

java - 为什么在排序数组的二分查找场景中仍然出现错误情况?

sql - DATEADD的这三种用法有什么区别吗?

sql - 如何在 SQL 中拆分数据