До сих пор неясно, действительно ли вы этого ожидаете.Из вашего набора данных мне кажется, что вы хотите численно упорядочить компоненты, основываясь на каком-то номере версии в конце компонента.Если это действительно то, что вам нужно, то вы можете игнорировать нечисловые символы в имени и порядке чистых чисел в конце строки (с обязательным предложением where
).
ORDER BY REPLACE ( name, TRANSLATE(name,' .0123456789',' '),'');
Если этоВ этом случае добавление level
также к ORDER BY
не должно иметь никакого значения, если только ваш числовой порядок версий и уровень не синхронизированы.
Может возникнуть проблема, если у вас есть такие компоненты, как component2_name1.2
и т.д., которые могут нарушить эту логику, для которой вам может потребоваться REGEXP
, чтобы идентифицировать требуемый шаблон.Но это не так из ваших данных, и я предположил, что это так, и вы можете уточнить, если это не то, что вы всегда можете иметь в своем наборе данных.
Вот демонстрация полученного результатадля ваших образцов данных.
Демо
Это будет работать, если числовой символ всегда является допустимым десятичным знаком и имеет только одну десятичную точку.Если у вас сложная система управления версиями, например, скажем 1.1.8
, 2.1.1
и т. Д., Она требует гораздо более сложного упорядочения поверх REPLACE ( name, TRANSLATE(name,' .0123456789',' '),'')
.
В таких сообщениях вы найдете такие примеры Здесь
Примечание :Я бы также попросил вас прочитать инструкцию здесь , чтобы узнать, как задать хороший вопрос.Это позволит избежать путаницы с людьми, которые пытаются понять и ответить на ваш вопрос.