char型の比較


1.char型とvarchar型を比較する場合、char型にスペースが埋められる点を考慮する必要がある。
2.char型同士の比較であれば桁数を気にしなくてよい。
3.SUBSTRなど関数を使用した場合、スペースを考慮する必要がある。(関数の戻り値はchar型ではない??)


以下、実験結果

SET SERVEROUTPUT ON;

DECLARE
    NAME1 CHAR(10);
    NAME2 VARCHAR2(10);
    NAME3 CHAR(5);

BEGIN
    NAME1 := 'HOGE1';
    NAME2 := 'HOGE1';
    NAME3 := 'HOGE1';

   --1.CHAR型とVARCHARの比較
    IF NAME1 = NAME2 THEN
        DBMS_OUTPUT.PUT_LINE('EQUAL');
    ELSE
        DBMS_OUTPUT.PUT_LINE('NG');
    END IF;

   --2.桁数の異なるCHAR型の比較
    IF NAME1 = NAME3 THEN
        DBMS_OUTPUT.PUT_LINE('EQUAL');
    ELSE
        DBMS_OUTPUT.PUT_LINE('NG');
    END IF;

   --3.SUBSTR関数の戻り値と比較
    IF NAME1 = SUBSTR(NAME3,1,5) THEN
        DBMS_OUTPUT.PUT_LINE('EQUAL');
    ELSE
        DBMS_OUTPUT.PUT_LINE('NG');
    END IF;

END;
/


上記の実行結果は
1→NG
2→EQUAL
3→NG


動作確認環境: Oracle10.2.0.4.0