Oracle SQL: порядок по числовому и алфавитному порядку - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть таблица с названием "страны" и столбец с именем "val", который называется VARCHAR2 (2 CHAR).У меня есть некоторые проблемы с порядком значений из этого столбца.Я не буду писать все значения (359) из "val", например, несколько:

'AD','EC','XX','1C','1D','MR','4R','1E','TO','SK'

И я хочу упорядочить значения в числовом порядке, а не в алфавитном порядке:

'1C','1D','1E','4R','AD','EC','MR','SK','TO','XX'.

Я написал что-то вроде этого:

SELECT val FROM countries ORDER BY CASE WHEN val LIKE '[1-9]%' THEN 0 ELSE 1 END ASC; и все работает отлично, за исключением того, что первые два значения '1C' и '1D' показаны в конце таблицы, а не в начале.Это очень странноУ меня Oracle 12c.Мне нужна помощь !!

1 Ответ

0 голосов
/ 29 ноября 2018

Не используйте LIKE.Если вас волнует только первое значение, вы можете просто использовать сравнение строк:

ORDER BY (CASE WHEN SUBSTR(val, 1, 1) BETWEEN '0' AND '9'
               THEN 0 ELSE 1
          END) ASC,
         val
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...