You have mixed concepts of text and numbers and you are asking access to
know when to consider the field a number and when to consider the field
text.
10 and 11 are numbers (follow 9 not grouped with the 1xxx as text)
yet 300 is text (preceeds 99).
The only way I could do this would be via VBA code, and would have to know
all of the many variations of the data to accomplish that.
The function below will provide a string that can be used to sort on, and
will produce the sort you requested for this set of values, note it is not
error trapped for passing a null string and it may or may not work for all
cases you may have, it should be considered a starting point.
Public Function getSort(strPassed As String) As String
Dim intLength As Integer
Dim chrFirst As String
chrFirst = Left(strPassed, 1)
If chrFirst = "0" Or Len(strPassed) = 1 Then
getSort = strPassed
Else
getSort = "a" & strPassed
End If
End Function
Query:
SELECT Table1.text
FROM Table1
ORDER BY getsort([text]);
Ed Warren.