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这样的东西吗?
您可以按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)