空白埋め比較セマンティクスと非空白埋め比較セマンティクス(Oracle)

詳細は OracleSQL リファレンスを参照して下さい。

SQL> set serveroutput on
SQL> declare
  2  v_kekka     varchar2(6);
  3  v_hikaku_vc varchar2(6);
  4  v_hikaku_c  char(6);
  5  begin
  6  v_hikaku_vc := 'abc';
  7  v_hikaku_c  := 'abc';
  8  dbms_output.put_line ('v_hikaku_vc [' || v_hikaku_vc || ']');
  9  dbms_output.put_line ('v_hikaku_c  [' || v_hikaku_c || ']');
10  select 'test' into v_kekka from dual where v_hikaku_vc = v_hikaku_c;
11  dbms_output.put_line ('v_kekka     [' || v_kekka || ']');
12  end;
13  /
v_hikaku_vc [abc]
v_hikaku_c  [abc   ]
declare
*
行1でエラーが発生しました。:
ORA-01403: データが見つかりません。
ORA-06512: 行10


SQL>

なのに、

SQL> select 'test' from dual where 'abc' = 'abc   ';

'TEST'