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

Thứ tự tùy chỉnh trong Oracle SQL

Không biết điều này có đủ điều kiện đơn giản hay không:

order by 
    case 
       when currency = 'USD' then 1 
       when currency = 'BHT' then 2
       when currency = 'JPY' then 3
       when currency = 'MYR' then 4
       else 5
    end

hoặc nhỏ gọn hơn một chút nhưng dành riêng cho Oracle:

order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)

Giải pháp ở trên sử dụng các số để xác định thứ tự sắp xếp sẽ không tự động sắp xếp chính xác các đơn vị tiền tệ không được đề cập trong biểu thức viết hoa / giải mã.

Để chỉ cần đặt USD ở phía trước và không quan tâm đến phần còn lại, tiêu chí đặt hàng "được tạo" cũng phải là một giá trị ký tự. Bạn có thể sử dụng phần sau trong trường hợp đó:

order by 
    case 
       when currency = 'USD' then '001' 
       else currency
    end

Trong đó sử dụng một thứ tự "theo thứ tự bảng chữ cái". Điều này hoạt động vì các ký tự được sắp xếp sau các chữ số số. (Sử dụng 'AAA' thay vì '001' cũng sẽ hoạt động).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo tệp cuộn chỉ lệnh sql oracle

  2. Làm cách nào để ghi / theo dõi các lệnh gọi thủ tục được lưu trữ của Oracle với các giá trị tham số?

  3. Đặt giá trị cho LIMIT trong khi sử dụng thu thập hàng loạt

  4. Nhận đầu ra từ dbms_output.get_lines bằng JDBC

  5. Làm cách nào để mô tả một bảng trong Oracle mà không sử dụng lệnh DESCRIBE?