在接受采访时有这个问题。
答案 0 :(得分:8)
没有。 varchar2
是一种Oracle数据类型,相当于它(以及TSQL)自己的varchar
。
澄清
Oracle varchar
和varchar2
之间的区别似乎源于the ANSI SQL standard was still being formulated。我找不到任何确切的参考资料,以确定最初的实施差异(如果有的话)(Oracle 7之前),因为它仍然是a source of confusion。可以说,自Oracle 7以来,这两者实际上被视为同义词。在版本8中,两者都遭受了改进(最大大小从2k增加到4k)。请注意,TSQL的varchar
可以存储8k。
答案 1 :(得分:1)
我从未听说过弗拉德的建议,即VARCHAR数据类型过去只支持2k的数据。鉴于它们在8.1.7之后的每个版本中都是同义词(我没有检查过早期版本的文档),这对我来说似乎很奇怪。弗拉德,你有参考吗?
来自SQL Reference section on the VARCHAR data type
目前是VARCHAR数据类型 与VARCHAR2数据类型同义。 Oracle建议您使用 VARCHAR2而不是VARCHAR。在里面 未来,VARCHAR可能被定义为a 用于的单独数据类型 可变长度的字符串 与不同的比较相比 语义。
由于Oracle早于SQL标准,因此Oracle中的某些比较语义与标准不匹配(例如比较NULL和空字符串)。理论上,Oracle具有VARCHAR数据类型,以便将来可以更改VARCHAR数据类型的比较语义以匹配SQL标准,而不会影响使用VARCHAR2数据类型的应用程序的向后兼容性。