Put the numbers in a number field and the letters in a text field. Then sort on the number field first, the text field second. A calculation field or merge fields can be used to display the data in the format you show.
Define calculation fields that separate the two parts of this data into separate fields:
NumberKey (return type number) : GetAsNumber ( YourField )
TextKey (Return type text) : filter ( Lower ( YourField ) ; "abcdefghijklmnopqrstuvwxyz" )
Then sort by NumberKey and TextKey
Keep the data in a text field, but format the numeric portion of the numbers to include leading zeroes so that the numeric portion of the field has the same number of digits in each case:
I have to stick with option 2. Is there any way to do it virtually in that I create a script that doesn't use real fields but temporary variables to sort?
You'll need calculation fields. Variables are like global fields, they don't store data different for each record.