En regardant la documentation Oracle sur les littéraux :
et la documentation de la sémantique de comparaison avec rembourrage en blanc indique :
Puisque le côté gauche de la comparaison est un CHAR(10)
et le côté droit est un texte littéral, puis une sémantique de comparaison remplie de blancs est utilisée et 'hello ' = 'hello'
est vrai.
Vous pouvez le voir dans l'exemple simple :
SELECT * FROM DUAL WHERE 'hello ' = 'hello';
Mettre à jour :
[TL;DR] Ce comportement est apparu dans toutes les versions d'Oracle depuis au moins Oracle 7 (sorti en 1992). J'ai arrêté de chercher la documentation sur les versions datant de plus de deux décennies, mais je pense que vous constaterez que cela a été le cas dans la plupart (toutes ?) des versions.
Voici la documentation des différentes versions :
- Oracle 12c Texte littéral &sémantique remplie de blancs
- Oracle 11g Textes littéraux &sémantique remplie de blancs
- Oracle 10gR2 Textes littéraux &sémantique remplie de blancs
- Oracle 9 Textes littéraux &sémantique remplie de blancs
- Oracle 8 Textes littéraux &sémantique remplie de blancs
- Oracle 7 Texte littéral