Exactement, le problème vient du fait que tu stockes en varchar.
Le ORDER BY se faire caractère par caractère en partant du premier caractère sur un varchar (D'où 19 < 2)
Si tu es sûr et certain que tu n'auras que des entiers dans ton champ et que tu n'as pas la possibilité de changer de type de champ (on ne sait jamais), tu peux caster ce champ en tant que int, tu obtiendrais quelque chose comme ça (elle est pas obtimale, d'autres personnes corrigeront sûrment pour moi) :
Ca devrait avoir l'effet escompté.
Cependant, si tu peux changer le type de ton champ position, change le en INTEGER pour éviter ce genre de conversion à la volée qui est assez gourmande.