Vous obtenez le même résultat sans les zéros non significatifs.
Utilisez le type de données entier pour comparer les valeurs entières.
Vous pouvez également convertir les valeurs à la volée en utilisant cast :
Votre exemple avec Cast :
select if( cast('00160001' as unsigned) between cast('0013001' as unsigned)
and cast('0023000' as unsigned),1,0) as test_a,
if( cast('00200000' as unsigned) between cast('0013001' as unsigned)
and cast('0023000' as unsigned),1,0) as test_b;