Oracleは文字列リテラルをCHARに変換するためです。CHARは固定長であるため、短い文字列を正しい長さに拡張する必要があり、したがってスペースが追加されます。代わりにVARCHAR2を試してください。
SELECT
CASE
WHEN cast(' 1a' as varchar2(100)) = cast(' 1a ' as varchar2(100))
THEN 'EQUAL - but it isn´t- HELP!!!!' ELSE 'UNEQUAL'
END
from dual;
編集:CHAR(10)とVARCHAR2(10)の違いを説明する例
declare
l_char1 char(10) := '1';
l_char2 char(10) := '1 ';
l_varchar1 varchar2(10) := '1';
l_varchar2 varchar2(10) := '1 ';
begin
if l_char1 = l_char2 then
dbms_output.put_line('char equal');
else
dbms_output.put_line('char NOT equal');
end if;
if l_varchar1 = l_varchar2 then
dbms_output.put_line('varchar equal');
else
dbms_output.put_line('varchar NOT equal');
end if;
end;