【问题标题】:sql order by numeric stringsql按数字字符串排序
【发布时间】:2010-02-03 05:02:51
【问题描述】:

我正在使用 oracle 10。我需要根据两个数字字符串字段对结果集进行排序。 一个排序标准字段包含如下数据: FIELD1:

FO-100001001001 
FO-100001002001
FO-100001003001
SQ-200001003001
FC-102001003001

另一个:

FIELD2:
000203
000567
349990

我需要结合两个条件,第一个条件优先,结果需要升序。

这个 sql 怎么写?

【问题讨论】:

    标签: sql oracle hibernate


    【解决方案1】:

    由于数字是零填充的,您可以简单地将它们作为字符串进行比较:

    SELECT ...
    FROM ...
    ORDER BY field1 ASC, field2 ASC
    

    或者如果你想忽略field1中的前缀:

    SELECT ..., SUBSTR(field1, 3) AS stripped_field1 
    FROM ...
    ORDER BY stripped_field1 ASC, field2 ASC
    

    【讨论】:

      【解决方案2】:

      我假设“数字字符串”是指“varchar”,并且字母数字排序适合您(如果格式固定并且您有前导零,则应该这样做)。

      select * from table order by field1, field2;
      

      【讨论】:

        猜你喜欢
        • 2019-01-13
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多