Difference between varchar and varchar2

In this tutorial you will learn about difference between varchar and varchar2.

Varchar stands for variable length character string. Both Varchar and Varchar2 are data types to store character strings for particular column (field) in databases. These are reserved by ORACLE. If we relay empty string and NULL being the same, then we should use varchar2 instead of varchar. Because it treats both null and empty strings as same. Oracle stated that, “Do not use varchar datatype” although currently both used for same purpose. But in future varchar usage may change. It is for future purpose. So now it is better to stick with varchar2.

Difference between varchar and varchar2

Varchar Varchar2
1) Varchar can identify NULL and empty string separately. 1) Varchar2 cannot identify both separately. Both considered as same for this.
2) Varchar can store minimum 1 and maximum 2000 bytes of character data. 2) Varchar2 can store minimum 1 and maximum 4000 bytes of character data.
3) Allocate fixed size of data irrespective of the input.

Ex: We defined varchar (15) and entered only 10 characters. But it allocates space for entire 15 characters.

3) Allocate variable size of data based on input.

Ex: We defined varchar2 (15) and entered only 10 characters. Then varchar2 will allocate space for 10 characters only but not for 15.

4) For varchar data, extra spaces are padded to the right side. 4) For varchar2 extra spaces will be truncated.
5) Varchar is ANSI Sql standard 5) Varchar2 is Oracle standard
6) Varchar definition may change in future. 6) Varchar2 definition will not change. It is standard.
7) Varchar is an external datatype. 7) Varchar2 is an internal datatype.

Comment below if you have doubts regarding varchar vs varchar2.

Category: SQL

9 thoughts on “Difference between varchar and varchar2

    1. ARUL

      Don’t follow this post. All these information about varchar and varchar2 is wrong. Seems like this guy is not working in real world environment. His full time job is writing blogs that he has no experience at all

  1. mohammadmilad

    it was awesome info dear sir thanks alot for such a effective info

  2. Harika

    lv_1 varchar2(10) := ”;
    lv_2 varchar(10) := ”;
    lv_3 varchar(10) := ‘a’;
    if lv_1 is null then
    end if;
    if lv_2 is null then
    end if;

    Can you please explain why its not showing any difference here?

  3. Arul Jebin

    This post is misleading about varchar and varchar2. Both of these allocates space dynamically. Currently both of them can’t say difference between empty string and null. Only difference between both of them is maximum size Oracle reserved this for future use. Please remove this post as it is a great misleading to the people who are preparing for the interviews. Thank you.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.