Please try this
select * from ( select cast( column1 as nvarchar(5)) as column1
from table1
union
select column1 from table2) as x
order by
case
when isnumeric(column1) = 1 then cast(column1 as int)
when isnumeric(left(column1,1)) = 0 then ascii(left(lower(column1),1))
else 2147483647
end