A. oracle varchar 和varchar2的區別
varchar2是oracle提供的獨特的數據類型
oracle保證在任何版本中該數據類型向上和向下兼容
但不保證varchar,這是因為varchar是標准sql提供的數據類型
有可能隨著sql標準的變化而改變
不過ocacle以後的版本就不支持varchar類型,如果想新版本的資料庫兼容就不要用varchar,如果想和其它資料庫兼容就不要用varchar2
另外區別(重點):
varchar2存放空字元串'',和null,都統一用null來存放到資料庫中,直接查詢''是查詢不到東西的,這是跟其他資料庫的主要區別。
海楓科技
B. PL SQL中 varchar 和 varchar2有什麼區別
1.varchar2把所有字元都占兩位元組處理(一般情況下),varchar只對漢字和全形等字元占兩位元組,數字,英文字元等都是一個位元組;
2.VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;
3.VARCHAR2字元要用幾個位元組存儲,要看資料庫使用的字元集,
大部分情況下建議使用varchar2類型,可以保證更好的兼容性。
C. 在oracle資料庫中為什麼推薦使用varchar2類型而不推薦使用char和varchar
例如:
v_char
varchar2(10);
c_char
char(10);
varchar2:對於定義長度的變數或表中的欄位的長度可變,就是定義varchar2(10),你只有一個字元時,變數或表中的欄位裡面就只保存了1個字元,不補空格,v_char='A';length(v_char)=1。
c_char/varchar:是定長數據:賦值c_char='A',實際上是:c_char='A
',length(c_char)=10。
如果作比較的話如果使用c_char/varchar,你會比較痛苦的
if
c_char=v_char
then
這樣的語句出來的肯定是:false否(else)裡面的,要對c_char實行rtrim才是:真:if
rtrim(c_char)=v_char
then
這才返回:ture
D. VARCHAR2與VARCHAR的區別
二者的區別如下:
1,varchar2把所有字元都占兩位元組處理(一般情況下),varchar只對漢字和全形等字元占兩位元組,數字,英文字元等都是一個位元組;
2,VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;
3,VARCHAR2字元要用幾個位元組存儲,要看資料庫使用的字元集。
大部分情況下建議使用varchar2類型,可以保證更好的兼容性。
E. oracle中欄位類型varchar2最大長度是多少
1、varchar2有兩個最大長度:一個是在欄位類型4000;一個是在PL/SQL中變數類型32767。這是一個比較容易出錯的地方。
2、因為在函數中可以聲明長度超過4000的字元串變數,並且將它作為返回值,這里是不會提示編譯錯誤的。這個函數平時都可以正常執行,而一旦這個字元串長度超過4000,函數執行就會出錯。
3、在pl/sql中,建個函數,測試varchar2長度,可以看到函數是成功的;
(5)資料庫varcharvarchar2擴展閱讀
1、varchar2是oracle提供的獨有的數據類型,varchar2是存放可變長度的字元串,最大長度是4000.
2、在oracle中 varchar2的最大長度為4000 bytes,即varchar2(4000),最多能儲存2000個漢字或4000位的數字字母。當儲存值超過時可以使用clob(Character Large Object)或blob(Binary Large Object)類型。
3、varchar、varchar2、nvarchar2區別
1)varchar(50) 表示該欄位類型為varchar2類型,長度為50,可以存單位元組字元50個,如字母、數字等,可以存儲雙位元組字元25個,如漢字。不同的是,若輸入的不足,則以空格填充。
2)varchar2(50) 表示該欄位類型為varchar2類型,長度為50,可以存單位元組字元50個,如字母、數字等,可以存儲雙位元組字元25個,如漢字。
3)nvarchar2(50)表示該欄位類型為nvarchar2,長度為50,不論英文,數字,中文都能存50個。
參考資料
ORACLE資料庫-網路
F. char,varchar和varchar2的區別
char:
使用指定長度的固定長度表示的字元串;比如char(8),則資料庫會使用固定的8個位元組來存儲數據
,不足8為的字元串在其後補空字元;
varchar
在oracle中varchar跟char是一個類型;sqlserver中varchar相當於oracle中的varchar2
varchar2
用實際字元數+2個位元組來存儲的變長字元串;比如一個欄位定義為varchar(10),而實際存儲的內容為
『A』,則資料庫會用3個位元組來存儲該字元串,其中前兩個位元組用來存儲字元的長度;
在資料庫中的欄位,由於一個欄位大小不能超過一個block的長度,所以varchar和char都是最大為
8000個位元組,由於可能會存儲漢字,也就是一個字元用2個位元組來存儲,所以欄位中最大定義為varchar
(4000),而在plsql中,這個大小的限制變為32000左右,這是因為表示其大小的位元組只有兩個。
G. oracle中varchar,varchar2,nvarchar,nvarchar2有什麼區別
一、varchar和varchar2之間的區別
1、在一般情況下,varchar2把所有字元都占兩位元組處理,而varchar只對漢字和全形等字元占兩位元組,數字,英文字元等都是一個位元組。
2、varchar2把空串等同於null處理,而varchar仍按照空串處理。
3、varchar2字元要用幾個位元組存儲,要看資料庫使用的字元集,比如GBK,漢字就會占兩個位元組,英文1個如果是UTF-8,漢字一般佔3個位元組,英文還是1個。
二、nvarchar和nvarchar2的區別
1、nvarchar中字元為中文則一般按2個位元組計算,英文數字等按照一個自己計算。
2、nvarchar2中所有字元均按照2個位元組計算。
3、nvarchar2雖然更占空間,但是它有更好的兼容性,所有推薦使用。
(7)資料庫varcharvarchar2擴展閱讀
Oracle資料庫
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。
可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的、適應高吞吐量的資料庫解決方案。
H. 在oracle中varchar和varchar2有什麼區別
區別點:
varchar只對漢字和全形等字元占兩位元組,數字,英文字元等都是一個位元組。
varchar2把空串等同於null處理,而varchar仍按照空串處理。
varchar2把所有字元都占兩位元組處理(一般情況下),並且字元要用幾個位元組存儲,要看資料庫使用的字元集。
I. char varchar varchar2 的區別
1、處理速度
char 和相同長度的varchar處理速度差不多。varchar的長度不會影響處理速度;
2、string
O/R Mapping中對應實體的屬性類型一般是以string居多,用char[]的非常少,所以如果按mapping的合理性來說,可變長度的類型更加吻合;varchar的存放和string是一樣原理的,即length {block}這種方式,所以varchar的長度和它實際佔用空間是無關的;
3、查詢成本
char和varchar的比較成本是一樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都一樣,因此應該比較誰佔用空間小。
例:
在存放相同數量的字元情況下,如果數量小,那麼char佔用長度是小於varchar的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)和char(3),那麼理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,理論上就應該是varchar快了。
因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)大於這個存放空間(好像是2位元組),那麼它就會比相同長度的char快了。
(9)資料庫varcharvarchar2擴展閱讀:
1、如果數據量非常大,又能100%確定長度且保存只是ansi字元,那麼char;
2、能確定長度又不一定是ansi字元或者,那麼用nchar;
3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;
4、不查詢的話沒什麼好說的,用nvarchar(4000);
5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度為X位的數據。
J. Oracle資料庫中的varchar2類型
varchar2(50)
表示該欄位類型為varchar2類型,長度為50,可以存單位元組字元50個,如字母、數字等,可以存儲雙位元組字元25個,如漢字。
varchar2是Oracle中特有的一種資料庫類型,與varchar的區別在於
varchar
存貯為定長
varchar2
存貯為不定長。
即:如果定義了一個欄位為varchar(10),那麼存貯到這個欄位的值,不管有沒有10個字元,都存貯為10個字元長度,不足的部份補足空格。而如果定義為varchar2(10),那麼按實際值來存貯,即欄位值有多長存貯為多長,不補足空格。這樣,在進行欄位值的比較時,varchar2顯然比
varchar欄位簡單且不易出錯。另外,在進行存貯時,varchar2
也比varchar節約存貯空間。因此建議用varchar2來代替varchar類型。除非你能確定這個欄位存貯內容總是那麼長,那麼varchar欄位也是可以用的。
varchar2的最大長度是4000