リテラル に関するOracleドキュメントを参照してください。 :
および
比較の左側はCHAR(10)
であるため 右側はテキストリテラルであり、空白が埋め込まれた比較セマンティクスが使用され、'hello ' = 'hello'
本当です。
これは簡単な例で確認できます:
SELECT * FROM DUAL WHERE 'hello ' = 'hello';
更新 :
[TL; DR]この動作は、少なくともOracle 7(1992年にリリース)以降、すべてのバージョンのOracleで発生しています。 20年以上前のリリースに関するドキュメントの検索をやめましたが、これがほとんどの(すべての?)バージョンでの動作であることがわかると思います。
さまざまなバージョンのドキュメントは次のとおりです。
- Oracle 12c テキストリテラル &空白で埋められたセマンティクス
- Oracle 11g テキストリテラル &空白で埋められたセマンティクス
- Oracle 10gR2 テキストリテラル &空白で埋められたセマンティクス
- Oracle 9 テキストリテラル &空白で埋められたセマンティクス
- Oracle 8 テキストリテラル &空白で埋められたセマンティクス
- Oracle 7 テキストリテラル