2009-11-03 102 views

回答

8

因为它在Oracle中不起作用!你可以可以如果你愿意,可以将所有的列声明为VARCHAR2(4000),但不建议采用任何方式。有将在存储或数据库的性能没有区别,但是:

  • 你失去对可以存储在列
  • 一些客户端应用程序将分配4000个字节的内存接收明智值的约束(比如说)10是它所包含的全部数据。
+1

不仅仅是客户端应用程序,还有PL/SQL。 此外,你想考虑当你想将两列连接在一起时(例如格式化信封的地址行)会发生什么。 – 2009-11-03 21:44:07

+0

@托尼安德鲁斯,你能提供什么类型的客户端应用程序将这样做的例子? – JohnOsborne 2017-09-21 18:07:25

+0

@CodeFlava不,我不能 – 2017-09-21 18:34:05

6

可能是因为Oracle不支持VARCHAR(MAX)

VARCHAR根本不应该在Oracle中使用。

至于现在,它是VARCHAR2的同义词,但它可能会在将来更改,以便区分空字符串和NULL

VARCHAR应该这样做,但不在当前版本的Oracle,因此不应使用。

Oracle,对于VARCHAR2最大长度是SQL4000PL/SQL32767

对于较大的值,应该使用CLOB,但它与VARCHAR2有很大不同。您应该使用特殊方法访问它等。

+0

由于VARCHAR是ANSI SQL92非标准和VARCHAR2是不,我不同意“VARCHAR不应该在Oracle中使用。”和“......但未来......可能会改变......”的陈述。 – 2010-02-14 08:19:50

+0

@eyazici:从文档:http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#sthref3784 *为了避免可能的行为变化,请始终使用'VARCHAR2'数据类型来存储可变长度的字符串*。不同意使用说明书并不是最明智的做法,但当然这是您的选择。如果你想构建一个可能会在下一次升级时崩溃的'Oracle'应用程序,那么使用'VARCHAR'肯定是一种可行的方法。 – Quassnoi 2010-02-14 23:42:59

3

对于初学者来说,Oracle不一个VARCHAR(MAX)数据类型

参考: