Compare char against varchar, and the trailing spaces do matter. : 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    fixed_length_10 := 'ZZZZ';
  9    
 10    
 11    var_length_10 := 'ZZZZ';
 12    IF fixed_length_10 = var_length_10 THEN
 13      DBMS_OUTPUT.PUT_LINE('Char and Varchar2: '''
 14        || fixed_length_10 || ''' = '''
 15        || var_length_10 || '''');
 16    ELSE
 17      DBMS_OUTPUT.PUT_LINE('Char and Varchar2: '''
 18       || fixed_length_10 || ''' NOT = '''
 19       || var_length_10 || '''');
 20    END IF;
 21
 22  END;
 23  /
Char and Varchar2: 'ZZZZ     ' NOT = 'ZZZZ'

PL/SQL procedure successfully completed.

SQL>
SQL>
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.