MS T-SQL是否包含名为varchar2的数据类型?如果是这样,它和varchar之间有什么区别?

时间:2009-03-07 06:46:33

标签: sql oracle

在接受采访时有这个问题。

2 个答案:

答案 0 :(得分:8)

没有。 varchar2是一种Oracle数据类型,相当于它(以及TSQL)自己的varchar

澄清

Oracle varcharvarchar2之间的区别似乎源于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数据类型的应用程序的向后兼容性。