2009-11-03 166 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)數據類型

參考:

相關問題