如何按字典对存储在字符串中的数字进行排序?

g6ll5ycj  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(368)

我有一个字符串格式的数字列表,如下所示:
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
我得在Hive里分类。我怎样才能做到这一点?

b4lqfgs4

b4lqfgs41#

试着这样做:
首先,我使用声明的表变量作为测试场景的**模型。
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)

相关问题