本篇部落格關於如何區分char、nchar、varchar、nvarchar四種字段型別
#1、定義
char: 固定長度,儲存ansi字元,不足的補英文半形空格。
nchar: 固定長度,儲存unicode字元,不足的補英文半形空格
varchar: 可變長度,儲存ansi字元,根據資料長度自動變化。
nvarchar: 可變長度,儲存unicode字元,根據資料長度自動變化。
注意:ansi主要是以單位元組來儲存資料,一般適合英文。而我們常用的漢字需要用兩個位元組來儲存,所以就要使用unicode的資料型別,不然讀取出來的資料可能會亂碼。#2、varchar和nvarchar
(1)varchar和nvarchar的區別
nvarchar(n) :包含 n個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零。
varchar[(n)]:長度為 n 個位元組的可變長度且非 unicode的字元資料。n 必須是乙個介於 1 和 8,000之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。所輸入的資料字元長度可以為零。
例如:
兩欄位分別有字段值:我的everyday如字段值只是英文可選擇varchar,而字段值存在較多的雙位元組(中文、韓文等)字元時用nvarchar那麼varchar欄位佔2×2+8=12個位元組的儲存空間,而nvarchar欄位佔10×2=20個位元組的儲存空間。
(2)兩者比較
①從儲存方式上,nvarchar是按字元儲存的,而 varchar是按位元組儲存的;
②從儲存量上考慮, varchar比較節省空間,因為儲存大小為位元組的實際長度,而 nvarchar是雙位元組儲存;
③在使用上,如果儲存內容都是英文本元而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因為nvarchar是使用unicode編碼,即統一的字元編碼標準,會減少亂碼的出現機率;
④如果涉及不同語言之間的轉換,建議用nvarchar。
(3)nvarchar優缺點:
優點:判斷字串的時候可以不需要考慮中英文兩種字元的差別,可以避免程式中亂碼的問題。
缺點:儲存英文本元會增大一倍的儲存空間.但是在儲存代價已經很低廉的情況下,優先考慮相容性會給你帶來更多好處的,效率沒有varchar高。
#3、為什麼要用nvarchar?
有n字首的,n表示unicode字元,即所有字元都佔兩個位元組,nchar,nvarchar字元中,英文本元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。
#4、var的簡單說明
有var字首的,表示是實際儲存空間是變長的,varchar,nvarchar
所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。
#5、如何根據情況選擇四種字段型別?
① 如果你肯定儲存的資料長度,而且不包中文的,可以選擇char型別。
② 如果肯定儲存的資料長度,但可能包括中文,可以選擇nchar型別。
③ 如果不確定儲存的資料長度,儲存只有英文、數字的最好用varchar
④ 如果不確定儲存的資料長度,也有可能有中文,可以選擇nvarchar型別。
#6、總結概括
char,nchar 定長,速度快,佔空間大,需處理
varchar,nvarchar,text 不定長,空間小,速度慢,無需處理
nchar、nvarchar、ntext處理unicode碼
學生管理系統總結
1 變數名只d1字母 數字和下劃線組成,其中不能有小數點和空格。2 變數名不能與vb的保留字相同,也不要與過程名和符號常星名相同。3 變數名必須以字母開頭,其字元個數不得超過255個。4 變數名不區分大小寫 dim a as integer 說明a為整型變數 dim b as string 說明b為...
VB 學生資訊管理系統6 錯誤除錯
因為站在了巨人的肩膀上,在理解 意思後的除錯中,用到之前的別人的csdn。所以原理查的不是很透徹。這裡總結一下我的問題!1.vb 如下 中mrc.eof false應該怎麼理解呢?set mrc executesql txtsql,msgtext if mrc.eof false then exec...
學生資訊管理系統總結
經過這一階段的學習,我結束了學生資訊管理系統,在這個學習階段不僅使我對於vb有了更深一步的認識,而且對於sql語句也有了較深的了解。下面是我的記錄 1.str2 msgbox 是否刪除當前記錄?vbokcancel,刪除當前記錄 中 代表的意思?用來將變數定義成字串,如 dim str2 2.frm...