oracle
中2000
個byte
,並不是
2000
個字元的意思,
1個字元在
oracle
中可能是1個
byte到4
個byte
不等,需看資料庫字符集的設定了。
對gbk
字符集而言,
ascii
碼中128
個字元使用
1個位元組進行儲存,其它字元使用雙位元組儲存;對
utf8
字符集而言,
ascii
碼中128
個字元使用
1個位元組進行儲存,其它採用兩個或三個位元組進行儲存,四個位元組儲存的是極少使用字元;
資料庫中有乙個引數
nls_leng
th_semantics
,這個引數有兩個取值
char
和byte
。當為char
時字元型別的長度是按字元個數來計算,而不是按
byte
來計算,這在使用變長字符集
(al32utf8)
的情況下非常有用,因為乙個字元所占用的位元組數是不定的,就給我們準確估計字段長度
(byte)
帶來不便。 1
、char。
char
儲存定長資料很方便,
char
欄位上的索引效率級高,比如定義
char(10)
,那麼不論你儲存的資料是否達到了
10個位元組,都要占去
10個位元組的空間,不足的自動用空格填充。 2
、varchar
varchar
儲存變長資料,但儲存效率沒有
char
高。如果乙個字段可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。varchar型別的實際長度是它的值的實際長度+1。為什麼「+1」呢?這乙個位元組用於儲存實際使用了多大的長度。
從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。 3
、text
text
儲存可變長度的非
unicode
資料,最大長度為
2^31-1(2,147,483,647)
個字元。 4
、nchar
、nvarchar
、ntext
這三種從名字上看比前面三種多了個
「n」。它表示儲存的是
unicode
資料型別
的字元。我們知道字元中,英文本元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,
unicode
字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。 5、
字符集與國家字符集
1>
字符集(1)
用來儲存
char, varchar2, clob, long
等型別資料
(2)用來標示諸如表名、列名以及
pl/sql
變數等(3)
用來儲存
sql和
pl/sql
程式單元等
2>
國家字符集
(1)用以儲存
nchar, nvarchar2, nclob
等型別資料
(2)國家字符集實質上是為
oracle
選擇的附加字符集,主要作用是為了增強
oracle
的字元處理能力,因為
nchar
資料型別可以提供對亞洲使用定長多位元組編碼的支援,而資料
庫字符集則不能。國家字符集在
oracle9i
中進行了重新定義,只能在
unicode
編碼中的
af16utf16
和utf8
中選擇,預設值是
af16utf16
字段型別
中文說明
限制條件
其它說明
char
固定長度字串
最大長度2000bytes
varchar2
可變長度的字串
最大長度4000bytes
可做索引的最大長度749
nchar
根據字符集而定的固定長度字串
最大長度2000bytes
nvarchar2
根據字符集而定的可變長度字串
最大長度4000bytes
date
日期(日-月-年)
dd-mm-yy(hh-mi-ss)
經過嚴格測試,無千蟲問題
long
超長字串
最大長度2g(231-1)
足夠儲存大部頭著作
raw固定長度的二進位制資料
最大長度2000bytes
可存放多**圖象聲音等
long raw
可變長度的二進位制資料
最大長度2g
同上blob
二進位制資料
最大長度4g
clob
字元資料
最大長度4g
nclob
根據字符集而定的字元資料
最大長度4g
bfile
存放在資料庫外的二進位制資料
最大長度4g
rowid
資料表中記錄的唯一行號
10bytes
********.****.****格式,*為0或1
nrowid
二進位制資料表中記錄的唯一行號
最大長度4000bytes
number(p s)
數字型別
p為整數字,s為小數字
decimal(p s)
數字型別
p為整數字,s為小數字
integer
整數型別
小的整數
float
浮點數型別
number(38),雙精度
real
實數型別
number(63),精度更高
oracle儲存過程 更改字段型別
一 問題說明 在專案開發過程中,有時需要將多張表做union操作,會發現由於個別表的字段不一致,造成union語句查詢報錯。這時有以下的解決方法 1.較為簡單 將少量的不一致字段,使用to number to date等方式作下處理。這樣能夠確保查詢操作正常 2.較為複雜 更改少量不一致欄位的字段型...
Oracle 字段型別
oracle 字段型別 字段型別 描述字段長度及其預設值 char size 用於儲存定長 size 位元組的字串資料。每行定長 不足部分補為空格 最大長度為每行2000位元組,預設值為每行1位元組。設定長度 size 前需考慮字符集為單位元組或多位元組。varchar2 size 用於儲存變長的字...
Oracle欄位型別
oracle欄位型別 char 用於描述定長的字元型資料,長度 2000位元組 varchar2 用於描述變長的字元型資料,長度 4000位元組 nchar 用來儲存unicode字符集的定長字元型資料,長度 1000位元組 nvarchar2 用來儲存unicode字符集的變長字元型資料,長度 1...