Patrząc na dokumentację Oracle dotyczącą literałów :
oraz dokumentacją pustą semantyką porównania stany:
Ponieważ lewa strona porównania to CHAR(10)
a prawa strona to literał tekstowy, a następnie używana jest semantyka porównania uzupełniona pustym polem i 'hello ' = 'hello'
to prawda.
Możesz to zobaczyć na prostym przykładzie:
SELECT * FROM DUAL WHERE 'hello ' = 'hello';
Aktualizacja :
[TL;DR] To zachowanie pojawiło się we wszystkich wersjach Oracle od co najmniej Oracle 7 (wydanego w 1992 roku). Przestałem szukać dokumentacji dotyczącej wydań sprzed ponad dwóch dekad, ale spodziewam się, że okaże się, że tak było w większości (wszystkich?) wersji.
Oto dokumentacja dla różnych wersji:
- Oracle 12c Literały tekstowe &semantyka z pustym wypełnieniem
- Oracle 11g Literały tekstowe &semantyka z pustym wypełnieniem
- Oracle 10gR2 Litery tekstowe &semantyka z pustym wypełnieniem
- Oracle 9 Litery tekstowe &semantyka z pustym wypełnieniem
- Oracle 8 Litery tekstowe &semantyka z pustym wypełnieniem
- Oracle 7 Literały tekstowe