Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORACLE SQL | Sửa đổi dữ liệu trong ORDER BY

Thay đổi ĐƠN HÀNG CỦA bạn BẰNG cách sắp xếp thứ tự bằng số:

 ORDER BY regexp_replace(FILE_NAME, '_m', 1),
          regexp_replace(FILE_NAME, '_l', 2),
          regexp_replace(FILE_NAME, '_r', 3);

ví dụ:

WITH t
  AS (SELECT '12345_l.tif' AS file_name FROM dual
      UNION
      SELECT '12345_m.tif' FROM dual
      UNION
      SELECT '12345_r.tif' FROM dual
      UNION
      SELECT '12345_x.tif' FROM dual
      UNION
      SELECT '12345_y.tif' FROM dual)
SELECT file_name
  FROM t
 ORDER BY regexp_replace(FILE_NAME, '_m', 1),
          regexp_replace(FILE_NAME, '_l', 2),
          regexp_replace(FILE_NAME, '_r', 3);

Cung cấp:

==============
12345_m.tif
12345_l.tif
12345_r.tif
12345_x.tif
12345_y.tif

Hy vọng nó sẽ giúp ...

Ngoài ra, bạn có thể sử dụng:

 ORDER BY (CASE SUBSTR(file_name, INSTR(file_name, '_')+1, 1)
             WHEN 'm' THEN 1
             WHEN 'l' THEN 2
             WHEN 'r' THEN 3
             ELSE 4
            END) ASC;

E.G:

WITH t
  AS (SELECT '12345_l.tif' AS file_name FROM dual
      UNION
      SELECT '12345_y.tif' FROM dual
      UNION
      SELECT '12345_r.tif' FROM dual
      UNION
      SELECT '12345_x.tif' FROM dual
      UNION
      SELECT '12345_m.tif' FROM dual)
SELECT file_name
  FROM t
 ORDER BY (CASE SUBSTR(file_name, INSTR(file_name, '_')+1, 1)
             WHEN 'm' THEN 1
             WHEN 'l' THEN 2
             WHEN 'r' THEN 3
             ELSE 4
            END) ASC;

Cung cấp:

12345_m.tif
12345_l.tif
12345_r.tif
12345_x.tif
12345_y.tif



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SELECT QUERY cho một đến nhiều mối quan hệ giữa hai bảng

  2. <> Có nghĩa là gì trong Oracle

  3. Thực thi câu lệnh sql động thành SYS_REFCURSOR

  4. Ngày truyền trong oracle

  5. Cách xác định tuần của một quý trong truy vấn Oracle