Avec MySQL, je sais pas, mais avec Orcale, il y a une fonction DECODE. Il y a certainement un équivalent.
Utilisation du DECODE :
SELECT ID, SCORE
FROM BETA_TESTS
ORDER BY DECODE(SCORE, 'excellent', 5, 'bien', 4, 'moyen', 3, 'pas terrible', 2, 'nul', 1) DESC
En fait, DECODE prends un nombre illimité de paramètres.
Le premier est le nom du champs (ou variable, fonction, etc.) à tester. Ensuite, les paramètres vont par doublons, le permier étant la valeur recherchée et le second la valeur de substitution.
S'il y a un dernier paramètre qui n'est pas en binôme, alors il est utilisé comme valeur par défaut, sinon, c'est la valeur du champ qui est conservée.
Avec MS SQL Server, il me semble que l'équivalent est "CASE".