Fwiw, the Oracle documentation for VARCHAR2 states: The VARCHAR datatype is synonymous with the VARCHAR2 datatype. To avoid possible changes in behavior, always use the VARCHAR2 datatype to store variable-length character strings.
Oracle has a known issue where there is no distinction between NULL and a zero-length string. However, they called this VARCHAR2, as "one day" they will remove this distinction in VARCHAR. It's a stupid implementation on their part, but at least they flagged their own stupidity and have plans for a brighter future.