
Envoyé par
jadey
Apparement le case n'est pas:
- portable
- rapide (en comparaison avec une expression booléenne)
- maintenable
Ah bon ?
- portable ... Qu'est ce que vous appelez portable exactement ?
car CASE WHEN fait partie intégrante de SQL92 (Cf BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL (SQL-92)), vous le trouverez sur la pluspart (voir meme l'intégralité) des SGBD.
-Rapide : Je n'ai a vrai dire jamais eu la curiosité d'analyser la différence de plan d'execution entre un CASE WHEN et une tripoté d'expressions booleennes, ca vaudrait le coup d'y jeter un oeil, mais j'ai de gros doute sur le fait que cela soit moins rapide.
- Maintenable : Cela dépend beaucoup de votre facon de coder ...
Vous definissez
Je l'aurai ecrit genre : (A.B) + (!A.C)
(A and B) or (not A and C)
Du coup, votre
IF A THEN B ELSE IF C THEN D ELSE E
Je l'aurai ecrit genre (A.B) + (C.D) + !((A.B) + (C.D)) . E
Ce qui est quand meme beaucoup moins lisible qu'un
1 2 3 4 5
| CASE
WHEN A THEN B
WHEN C THEN D
ELSE E
END |
Sans compter du temps passer a chercher a régulariser vos expressions booléennes, a tester leur table de vérités, et en terme de maintenance, j'aimerai bien voir ce que vous ferez lorsqu'il faudra rajouter une autre condition...
A vous de voir
Partager