我有一个字符串格式的数字列表,如下所示:



我想对其进行排序,以便获得以下格式的输出。



我必须在Hive中进行此排序。我该如何实现?

最佳答案

像这样尝试:

首先,我将声明的表变量用作测试方案的“模型”。

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)

10-07 19:21
查看更多