Fixed length strings are compared with blank-padded comparison semantic : CHAR « PL SQL Data Types « Oracle PL/SQL Tutorial






SQL>
SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
  2    fixed_length_10  CHAR(10);
  3    fixed_length_20  CHAR(20);
  4    var_length_10    VARCHAR2(10);
  5    var_length_20    VARCHAR2(20);
  6  BEGIN
  7
  8    
  9    
 10    fixed_length_10 := 'ZZZZ';
 11    fixed_length_20 := 'ZZZZ';
 12    IF fixed_length_20 = fixed_length_10 THEN
 13      DBMS_OUTPUT.PUT_LINE('Char: ''' || fixed_length_10 || ''' = '''
 14                           || fixed_length_20 || '''');
 15    END IF;
 16
 17  END;
 18  /
Char: 'ZZZZ     ' = 'ZZZZ               '

PL/SQL procedure successfully completed.

SQL>








21.2.CHAR
21.2.1.CHAR
21.2.2.CHAR type variable
21.2.3.Compare CHAR and VARVHAR32 variables for equality
21.2.4.Constants are compared using blank-padded comparison semantics, so the trailing spaces won't affect the result.
21.2.5.Fixed length strings are compared with blank-padded comparison semantic
21.2.6.Compare fixed length string and a literal
21.2.7.Compare char against varchar, and the trailing spaces do matter.
21.2.8.Assigning an empty string to the character variable is exactly the same as assigning NULL to it.