Сортировка пунктов с подпунктами firebird sql

Есть таблица, из которой получаю подпункты. Подпункты хранятся в поле varchar. Данные в виде

   3.1
   3.1.1
   3.1.2
   3.1.3
   3.1.2.1
   ...
   3.1.10

Данные в таблице неупорядочены. При выборке с order by по столбцу с пунктами запрос достаёт

   3.1
   3.1.1
   3.1.10
   3.1.2
   3.1.2.1
   3.1.3
   ...

А хотелось бы, чтобы они были упорядочены. Есть ли возможность такое сделать? Пытался создавать в запросе новый столбец, где задаются порядковые номера, но то, что я написал, работает только если подпункт (4.1, 4.2, 4.3, ..., 4.10)

cast(iif(position('.',right(n_str,char_length(n_str)-position('.',n_str)))=0,right(n_str,char_length(n_str)-position('.',n_str)),
left(right(n_str,char_length(n_str)-position('.',n_str)),position('.',right(n_str,char_length(n_str)-position('.',n_str)))-1)) as numeric(2,0)) as pos

Думал над тем, чтобы завести в таблице ещё одно поле и прописать в нём порядок, но в таблице 300+ строк и всё неупорядоченные...


Ответы (0 шт):