It is because of difference between order by with strings
and order by with numbers
:
select U.IdUser,U.memberID,SL.Title from users U
inner join statuslist SL on
U.idStatus=SL.IdStatus
where U.idOrg='1'and isnull(U.memberID,'')!=''
order by CAST(Substring(U.memberID,2,LEN(U.memberID)-1) AS INT);
select U.IdUser,U.memberID,SL.Title from users U
inner join statuslist SL on
U.idStatus=SL.IdStatus
where U.idOrg='1'and isnull(U.memberID,'')!=''
order by CONVERT(INT,Substring(U.memberID,2,LEN(U.memberID)-1));