Difference Between Varchar and Varchar2
Difference Between Varchar and Varchar2
VARCHAR is reserved by Oracle to support distinction between NULL and empty string in future, as ANSI standard prescribes. VARCHAR2 does not distinguish between a NULL and empty string, and never will. If you rely on empty string and NULL being the same thing, you should use 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 |
---|---|
Varchar can identify NULL and empty string separately. | Varchar2 cannot identify both separately. Both considered as same for this. |
Varchar can store minimum 1 and maximum 2000 bytes of character data. | Varchar2 can store minimum 1 and maximum 4000 bytes of character data.Varchar2 can store minimum 1 and maximum 4000 bytes of character data. |
Allocate fixed size of data irrespective of the input. | Allocate variable size of data based on input. |
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. | 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. |
For varchar data, extra spaces are padded to the right side. | For varchar2 extra spaces will be truncated. |
Varchar is ANSI Sql standard | Varchar2 is Oracle standard |
Varchar definition may change in future. | Varchar2 definition will not change. It is standard. |
Varchar is an external datatype. | Varchar2 is an internal datatype. |