Заказ работает правильно.Код ASCII для +
равен 43, а код ASCII для -
равен 45, поэтому +
действительно должен предшествовать -
в лексикографическом порядке.
В качестве альтернативного решения вы можете отсортировать по логическому значению true / false, содержит ли blood_group
символ -
, а затем по самому blood_group
, чтобы вы получили A
с доваши B
s:
SELECT *
FROM patient1
ORDER BY blood_group LIKE '%-%' DESC, blood_group