Если вы выберете числовой тип данных, разницы между 7.1 и 7.10 не будет вообще.
В этом случае я бы на самом деле разделил столбец на две части: целую и десятичную.
Таким образом, 7.1 будет храниться как 7 и 1, 7.10 будет храниться как 7 и 10.
Если бы это было простое число из двух (основных / второстепенных), оно бы работало достаточно хорошо, я думаю
Ваш запрос становится:
select major|'.'|minor, other_fields
from tbl
order by major, minor.
Для номера, состоящего из нескольких частей (например, заголовки глав, 3.1.4.5.9 и т. Д.), Я бы все же разделил его, но, вероятно, использовал бы отдельную таблицу для хранения компонентов.