Titta på Oracle-dokumentationen om bokstavliga :
och dokumentationen för tom vadderad jämförelsesemantik a> står:
Eftersom den vänstra sidan av jämförelsen är en CHAR(10)
och den högra sidan är en bokstavlig text, då används tomstoppad jämförelsesemantik och 'hello ' = 'hello'
är sant.
Du kan se detta i det enkla exemplet:
SELECT * FROM DUAL WHERE 'hello ' = 'hello';
Uppdatera :
[TL;DR] Detta beteende har förekommit i alla versioner av Oracle sedan åtminstone Oracle 7 (släpptes 1992). Jag slutade söka efter dokumentationen om utgåvor som är över två decennier gamla men jag förväntar mig att du kommer att upptäcka att detta har varit beteendet i de flesta (alla?) versioner.
Här är dokumentationen för de olika versionerna:
- Oracle 12c Text Literals &blank vadderad semantik
- Oracle 11g Textbokstäver &tom vadderad semantik
- Oracle 10gR2 Textbokstäver &blank vadderad semantik
- Oracle 9 Textbokstäver &blank vadderad semantik
- Oracle 8 Textbokstäver a> &blank vadderad semantik
- Oracle 7 Textbokstäver a>