我有一个字符串格式的数字列表,如下所示:
1-1 1-11 1-12 1-2 1-21 1-2-31
我想对它进行排序,以便得到以下格式的输出。
1-1 1-2 1-2-31 1-11 1-12 1-21
我得在蜂巢里做这个分类。我怎样才能做到这一点?
发布于 2016-11-18 09:30:53
试着这样做:
首先,我使用声明的表变量作为测试场景的**模拟*。
CTE将削减连字符处的数字。然后分别对两个部分使用数值排序。
DECLARE @tbl TABLE(StringNumber VARCHAR(10));
INSERT INTO @tbl VALUES
('1-1')
,('1-2')
,('1-11')
,('1-12')
,('1-21');
WITH Parted AS
(
SELECT LEFT(StringNumber,pos.Hyph-1) AS PartOne
,SUBSTRING(StringNumber,pos.Hyph+1,1000) AS PartTwo
,StringNumber
FROM @tbl AS tbl
CROSS APPLY(SELECT CHARINDEX('-',StringNumber) ) AS Pos(Hyph)
)
SELECT * FROM Parted
ORDER BY CAST(PartOne AS INT),CAST(PartTwo AS INT)https://stackoverflow.com/questions/40672185
复制相似问题