One way: you can match and put numeric characters in the alphabet, and then sort by column.
SELECT *
FROM table_plants
ORDER BY CASE
WHEN REGEXP_LIKE(Plant_name , '[0-9]')
THEN 2
ELSE 1
END
,Plant_name;
Demo
If you want to consider numeric characters starting with a number, you can do this '^[0-9]'.
Also, if you want to use non-regexp functions like this translate, it should do the trick for cases like yours if the underscore is present in all numeric columns.
ORDER BY
TRANSLATE(Plant_name,'x0123456789','x')
source
share