Nhìn thấy tên của bạn, tôi không thể không đăng một cách đơn giản hóa câu trả lời của bạn:
SELECT id, number_value_in_string FROM table
ORDER BY CASE WHEN substr(number_value_in_string,1,2) = '1/'
THEN 1/substr(number_value_in_string,3)::numeric
ELSE number_value_in_string::numeric END, id;
Bỏ qua số chia có thể có cho 0.