我如何按升序对字符串数据(12小时制)进行排序?

问题描述 投票:0回答:1

我有一个名为class_time的列,该列具有将数据存储为的字符串格式

0730PM:0600PM:0800PM

如何使用oracle sql查询以升序方式获取此列数据

0600PM:0730PM:0800PM

sql oracle
1个回答
0
投票

例如:

SQL> with test (id, col) as
  2    (select 1, '0730PM:0600PM:0800PM' from dual union all
  3     select 2, '0400PM:0300AM:0200AM' from dual
  4    ),
  5  temp as
  6    (select id,
  7            regexp_substr(col, '[^:]+', 1, column_value) val
  8     from test cross join table(cast(multiset(select level from dual
  9                                              connect by level <= regexp_count(col, ':') + 1
 10                                             ) as sys.odcinumberlist))
 11    )
 12  select id,
 13    listagg(val, ':') within group (order by val) result
 14  from temp
 15  group by id;

        ID RESULT
---------- ------------------------------
         1 0600PM:0730PM:0800PM
         2 0200AM:0300AM:0400PM

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.