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
满足其他需要。
我有一个 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
满足其他需要。