sql 中的排序查询

sorting query in sql

我有一个 table,它有字段名称 ID。我的数据如下所示

LE001001
LE0010010
LE001003
LE001005
LE001006
LE001007
LE001008
LE001009

但我想通过如下排序显示我的数据

LE001001
LE001003
LE001005
LE001006
LE001007
LE001008
LE001009
LE0010010

请帮我创建查询

您想按 'LE' 之后的数字排序。假设前缀的长度始终相同,您可以使用一个技巧,先按长度排序,然后按值排序:

order by len(col), col

这适用于问题中的示例数据。您可以为此进行显式转换:

order by left(col, 2),
         cast(ltrim(rtrim(substring(col, 3, len(col)))) as int)

但是第一种方法如果可行的话会更容易打字。

order by substr(colum_name, 8, 2)

您可以定义 2 列。一个用于数字 1001, 10010,另一个 - 将数字添加到字符串 LE 的公式。然后将第一列排序为整数,并使用复合列 LE001001 满足其他需要。