線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6132
推到 Plurk!
推到 Facebook!

varchar的問題

答題得分者是:herbert2
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-09-11 23:00:21 IP:111.252.xxx.xxx 訂閱
請問大大
varchar(200)

varchar(10)
這兩個欄位如果都是存1
所佔的容量是如何?相等嗎??
謝謝
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-09-12 05:25:34 IP:75.18.xxx.xxx 未訂閱
Hello,

check out MSDN, the answer is there.

http://msdn.microsoft.com/en-us/library/aa258242(v=sql.80).aspx

varchar[(n)]
Variable-length non-Unicode character data with length of n bytes. n must be a value from 1 through 8,000. Storage size is the actual length in bytes of the data entered, not n bytes. The data entered can be 0 characters in length. The SQL-92 synonyms for varchar are char varying or character varying.

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-09-12 05:28:02 IP:75.18.xxx.xxx 未訂閱
Hello,

I am sorry that if your question about this data type is against to Oracle, please forget about my reply in below.

Thanks.
===================引 用 Stallion 文 章===================
Hello,

check out MSDN, the answer is there.

http://msdn.microsoft.com/en-us/library/aa258242(v=sql.80).aspx

varchar[(n)]
Variable-length non-Unicode character data with length of n bytes. n must be a value from 1 through 8,000. Storage size is the actual length in bytes of the data entered, not n bytes. The data entered can be 0 characters in length. The SQL-92 synonyms for varchar are char varying or character varying.

herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-09-12 21:15:45 IP:202.39.xxx.xxx 訂閱
請問您用的 Oracle 是那一版?原則上,Oracle 自 8i 版起就強烈建議使用 Varchar2 取代 Varchar,
且說以後將不再支援 Varchar 的屬性。

Varchar2(200) 若存 '1',則與 Varchar2(10) 存 '1' 所佔用的貯存空間是完全一樣的。

若准許存 NULL,則兩者皆存 NULL 時,其所佔用的貯存空間也是完全一樣的。
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-09-12 22:27:00 IP:111.252.xxx.xxx 訂閱
謝謝大大的回答
Varchar2(200) 若存 '1',則與 Varchar2(10)存 '1' 所佔用的貯存空間是完全一樣的。
//---
大大不好意思再借問一下
如果依上面的容量是一樣,那差別點就是10最多可存十個字元.200最多可存200個字元
那一個欄開的太小反正造成困擾.如果要加大還要再增大
那是不是代表Varchar2開多少其實並沒那麼重要,要就一次開大一點,反正所佔的容量
是一樣?


謝謝




===================引 用 herbert2 文 章===================
請問您用的 Oracle 是那一版?原則上,Oracle 自 8i 版起就強烈建議使用 Varchar2 取代 Varchar,
且說以後將不再支援 Varchar 的屬性。

Varchar2(200) 若存 '1',則與 Varchar2(10)存 '1' 所佔用的貯存空間是完全一樣的。

若准許存 NULL,則兩者皆存 NULL 時,其所佔用的貯存空間也是完全一樣的。
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-09-12 23:09:27 IP:202.39.xxx.xxx 訂閱
不完全是如此,當一 Row 的 Bytes 數較多,雖不是每 Column 都填滿,
但 Oracle 會依 Row 的最大 Bytes 數為每一 Block 後面預留一些空間,
便會浪費貯存空間了。
而且,Column 大小也要與前端配合;若只需 Varchar2(10) 卻設 Varchar2(200),
則 User 從前端 Key-In 進 60 Bytes,您要如何處理?而印報表時,您要如何 Layout?
用 10 字元還是 200 字元?

註:Block 有點兒類似磁帶的 Block。
若一個 Block 可以存數個 Row,則不會將一個 Row 分別存於兩個 Block。
若一個 Row 比一個 Block 大,則一個 Row 分存數個 Block,但一個 Block 中
不會含有兩個 Row 的各一小部分。
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-09-14 06:41:12 IP:125.224.xxx.xxx 訂閱
大大謝謝.你真強
===================引 用 herbert2 文 章===================
不完全是如此,當一 Row 的 Bytes 數較多,雖不是每 Column 都填滿,
但 Oracle 會依 Row 的最大 Bytes 數為每一 Block後面預留一些空間,
便會浪費貯存空間了。
而且,Column 大小也要與前端配合;若只需 Varchar2(10) 卻設 Varchar2(200),
則 User 從前端 Key-In 進 60 Bytes,您要如何處理?而印報表時,您要如何 Layout?
用 10 字元還是 200 字元?

註:Block 有點兒類似磁帶的 Block。
若一個 Block 可以存數個 Row,則不會將一個 Row 分別存於兩個 Block。
若一個 Row 比一個 Block 大,則一個 Row 分存數個 Block,但一個 Block 中
不會含有兩個 Row 的各一小部分。
系統時間:2024-11-21 16:45:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!