在TSQL中排序

TTC*_*TCG 2 t-sql sorting sql-server-2008

我正在使用SQL Server 2008.

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

2.1 
2.2 
2.3 
xxx
xxx
2.10
2.11
2.12
Run Code Online (Sandbox Code Playgroud)

你能指导我怎么做吗?

在此输入图像描述 谢谢.

mar*_*c_s 5

如果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
Run Code Online (Sandbox Code Playgroud)

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

SELECT (columns)
FROM dbo.YourTable
ORDER BY RefNrMajor, RefNrMinor
Run Code Online (Sandbox Code Playgroud)