如何在Oracle DB中按枚举排序

sed*_*ran 1 sql database oracle enums sql-order-by

我想按字符串列排序,其中该列是枚举.例如:

+----+--------+----------------------+
| ID |  NAME  |        STATUS        |
+----+--------+----------------------+
|  1 | Serdar | ACTIVE               |
|  2 | John   | DEACTIVE             |
|  3 | Jerry  | WAITING_FOR_APPROVAL |
|  4 | Jessie | REJECTED             |
+----+--------+----------------------+
Run Code Online (Sandbox Code Playgroud)

我想订购STATUS.它应该对结果进行排序,使得第一个结果必须具有STATUS = WAITING_FOR_APPROVAL,然后是ACTIVE,然后是DEACTIVE,然后是REJECTED.

在SQL中有什么办法吗?在java中有像Comparator这样的东西吗?

Jus*_*ave 6

您可以按CASE语句枚举语句和顺序中的值

SELECT id, name, status
  FROM your_table
 ORDER BY (CASE status 
                WHEN 'WAITING_FOR_APPROVAL' THEN 1
                WHEN 'ACTIVE' THEN 2
                WHEN 'DEACTIVE' THEN 3
                WHEN 'REJECTED' THEN 4
                ELSE 5
            END)
Run Code Online (Sandbox Code Playgroud)

  • 我可以使用Hibernate标准实现它吗? (2认同)