回覆列表
-
1 # 使用者335326747796
-
2 # 好開心影片
如果是使用oracle的話儲存字元資料的話就使用varchar2吧,這個是根據你儲存的資料自動縮減長度的,比較節省空間。char: 使用指定長度的固定長度表示的字串;比如char(8),則資料庫會使用固定的8個位元組來儲存資料,不足8為的字串在其後補空字元;varchar 在oracle中varchar跟char是一個型別;sqlserver中varchar相當於oracle中的varchar2varchar2 用實際字元數+2個位元組來儲存的變長字串;比如一個欄位定義為varchar(10),而實際儲存的內容為‘A’,則資料庫會用3個位元組來儲存該字串,其中前兩個位元組用來儲存字元的長度; 在資料庫中的欄位,由於一個欄位大小不能超過一個block的長度,所以varchar和char都是最大為8000個位元組,由於可能會儲存漢字,也就是一個字元用2個位元組來儲存,所以欄位中最大定義為varchar(4000),而在plsql中,這個大小的限制變為32000左右,這是因為表示其大小的位元組只有兩個。
C中的字串字面量的型別是char [N],即大小為N的char陣列,N為字面量包含的char數量(含末尾\0),可以賦值給char *,但是修改其內容是未定義行為
C++中稍微做了修改,型別改為const char [N],修改const修飾的區域自然也是未定義行為,原則上這隻能賦值給const char *,不過為了相容,一般編譯器對於你將其賦值給char *的行為只做一個warning
無論C還是C++,個人推薦字串字面量都賦值給const char *