Comparison of CHAR with VARCHAR2. : VARCHAR2 « PL SQL Data Types « Oracle PL/SQL Tutorial






SQL>
SQL> SET SERVEROUTPUT ON --for DBMS_OUTPUT.PUT_LINE.
SQL> SET ECHO ON
SQL> DECLARE
  2    employee_name_c CHAR(32);
  3    employee_name_v VARCHAR2(32);
  4  BEGIN
  5    --Assign the same value to each string.
  6    employee_name_c := 'James Gennick';
  7    employee_name_v := 'James Gennick';
  8
  9    --Test the strings for equality.
 10
 11    IF employee_name_c = employee_name_v THEN
 12       DBMS_OUTPUT.PUT_LINE('The names are the same');
 13     ELSE
 14       DBMS_OUTPUT.PUT_LINE('The names are NOT the same');
 15     END IF;
 16  END;
 17  /
The names are NOT the same

PL/SQL procedure successfully completed.

This occurred because the CHAR string contains a number of trailing spaces, whereas the VARCHAR2 string does not.









21.4.VARCHAR2
21.4.1.VARCHAR2
21.4.2.VARCHAR2 type variable
21.4.3.varchar2 type with default value
21.4.4.Trim a text string in PL/SQL
21.4.5.Test the strings for equality
21.4.6.Using Single Quote Characters as Part of Text Strings
21.4.7.Represents the old way of placing quotes inside the text, namely to double them
21.4.8.Concatenate several string constants
21.4.9.Concatenate both string variables and constants
21.4.10.Concatenate two string variables
21.4.11.Comparison of CHAR with VARCHAR2.
21.4.12.When comparing CHAR strings against VARCHAR2 strings, use the rtrim function to eliminate trailing spaces
21.4.13.Constants are compared using blank-padded comparison semantics
21.4.14.Fixed length strings are also compared with blank-padded comparison semantic
21.4.15.Comparison of a fixed length string and a literal
21.4.16.Compare a variable length string against a fixed length, and the trailing spaces do matter.
21.4.17.The maximum lengths of varchar2 strings do not matter, only the assigned values
21.4.18.Demonstrates that empty strings are NULL