Сортировка пунктов с подпунктами 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+ строк и всё неупорядоченные...