回答
因为它在Oracle中不起作用!你可以可以如果你愿意,可以将所有的列声明为VARCHAR2(4000),但不建议采用任何方式。有将在存储或数据库的性能没有区别,但是:
- 你失去对可以存储在列
- 一些客户端应用程序将分配4000个字节的内存接收明智值的约束(比如说)10是它所包含的全部数据。
可能是因为Oracle
不支持VARCHAR(MAX)
。
VARCHAR
根本不应该在Oracle
中使用。
至于现在,它是VARCHAR2
的同义词,但它可能会在将来更改,以便区分空字符串和NULL
。
VARCHAR
应该这样做,但不在当前版本的Oracle
,因此不应使用。
在Oracle
,对于VARCHAR2
最大长度是SQL
4000
和PL/SQL
32767
。
对于较大的值,应该使用CLOB
,但它与VARCHAR2
有很大不同。您应该使用特殊方法访问它等。
由于VARCHAR是ANSI SQL92非标准和VARCHAR2是不,我不同意“VARCHAR不应该在Oracle中使用。”和“......但未来......可能会改变......”的陈述。 – 2010-02-14 08:19:50
@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
- 1. Varchar(255)到Varchar(MAX)
- 2. 是否varchar(max)= varchar?
- 3. OutOfMemoryException SqlCommand VarChar(Max)
- 4. Sparse Varchar(max)
- 5. 检索VARCHAR(MAX)
- 6. SQL MAX()在VARCHAR
- 7. nvarchar&varchar与Oracle&SQLServer
- 8. SQLAlchemy截断VARCHAR(MAX)
- 9. VARCHAR(MAX)串联串
- 10. 按SQL Server中的varbinary(MAX)或varchar(MAX)
- 11. 使用过VARCHAR(n)的VARCHAR PostgreSQL的
- 12. Oracle BLOB vs VARCHAR
- 13. 特别是在SQL Server中,Varchar(50)的占用空间与Varchar(MAX)相同吗?
- 14. T-SQL VARCHAR(MAX)截断
- 15. 存储过程return varchar(MAX)
- 16. 在VARCHAR利用MAX()字段
- 17. T-sql COLLATE和Varchar(max)
- 18. varchar(N)中的N是指什么
- 19. 将varchar(max)转换为varbinary(max)
- 20. 从VARCHAR(MAX)字段中只选择n个字符
- 21. 使用varchar(max)创建列而不是varchar(8000)
- 22. 当它应该返回varchar(MAX)时,RODBC sqlQuery()返回varchar(255)
- 23. 坚持使用TEXT,NTEXT和IMAGE代替(N)VARCHAR(max)和VARBINARY(max)的原因
- 24. varchar(max)中有多少个字符
- 25. 从DataTable中查找Max()Value - Varchar()Column?
- 26. 使用HQL的varchar列的MAX
- 27. 什么是DB2的Varchar(Max)等价物?
- 28. varchar(max)变量的最大尺寸
- 29. SQL Server的隐式转换为VARCHAR(MAX)
- 30. 使用net.sourceforge.jtds.jdbc.Driver时varchar(max)列的错误
不仅仅是客户端应用程序,还有PL/SQL。 此外,你想考虑当你想将两列连接在一起时(例如格式化信封的地址行)会发生什么。 – 2009-11-03 21:44:07
@托尼安德鲁斯,你能提供什么类型的客户端应用程序将这样做的例子? – JohnOsborne 2017-09-21 18:07:25
@CodeFlava不,我不能 – 2017-09-21 18:34:05