Казалось бы, в свое время Oracle планировал дать другое определение VARCHAR, чем VARCHAR2 . Он сказал клиентам об этом и рекомендует не использовать VARCHAR . Какими бы ни были их планы, по состоянию на 11.2.0.2 VARCHAR идентичен VARCHAR2 . Вот что говорит Справочник по языку SQL 11g Release 2 :
Не используйте тип данных VARCHAR. Вместо этого используйте тип данных VARCHAR2. Хотя тип данных VARCHAR в настоящее время синонимичен с VARCHAR2, тип данных VARCHAR планируется переопределить как отдельный тип данных, используемый для символьных строк переменной длины, по сравнению с другой семантикой сравнения.
Руководство пользователя и справочник по PL / SQL 10g Release 2 объясняет это следующим образом:
В настоящее время VARCHAR является синонимом VARCHAR2. Однако в будущих выпусках PL / SQL, чтобы соответствовать новым стандартам SQL, VARCHAR может стать отдельным типом данных с другой семантикой сравнения. Это хорошая идея, чтобы использовать VARCHAR2, а не VARCHAR.
В документе Database Concepts 10g Release 2 говорится то же самое в более строгих терминах:
Тип данных VARCHAR является синонимом типа данных VARCHAR2. Чтобы избежать возможных изменений в поведении, всегда используйте тип данных VARCHAR2 для хранения символьных строк переменной длины.
Документация по Oracle 9.2 и 8.1.7 говорит, по сути, об одном и том же, поэтому, несмотря на то, что Oracle постоянно не рекомендует использовать VARCHAR , до сих пор они не сделали ничего, чтобы изменить его соотношение с VARCHAR2 .