ok i gave a simple solution
select * from test
order by substring(Zone,1,3) ,
cast(STuff(Zone,1,3,'000') as int)
ok here is a complex one
select * from test
order by substring(Zone,1,patindex('%[0-9]%',zone)-1) ,
cast(STuff(Zone,1,patindex('%[0-9]%',zone)-1,'000') as int)
if you want to check it
use this
Sql Fiddle[
^]