varchar與char的轉(zhuǎn)換 數(shù)據(jù)庫char,varchar,nchar,nvarchar類型分別有什么區(qū)別?各自在什么情況下使用比較好?
數(shù)據(jù)庫char,varchar,nchar,nvarchar類型分別有什么區(qū)別?各自在什么情況下使用比較好?簡而言之,char和nchar只能存儲單字節(jié)字符,如a、a、1、3等,存儲字符的長度是不可變
數(shù)據(jù)庫char,varchar,nchar,nvarchar類型分別有什么區(qū)別?各自在什么情況下使用比較好?
簡而言之,char和nchar只能存儲單字節(jié)字符,如a、a、1、3等,存儲字符的長度是不可變的。例如char(5),如果輸入字符AA,則存儲空間將用空格填充其他三個空位,而物理存儲的長度仍然是5個字符。
Varchar和nvarchar可以存儲長度可變的單字節(jié)和雙字節(jié)字符。區(qū)別同上。Char和nchar很少使用。Varchar和nvarchar更常用。因為nvarchar會浪費存儲空間,所以它通常被更頻繁地使用。Nvarchar確保定義的長度為100。無論輸入的是單字節(jié)字符還是雙字節(jié)字符,都不能超過100。如果varchar的大小為100,則單字節(jié)字符輸入不能超過100,而雙字節(jié)字符輸入不能超過Char:Char存儲定長數(shù)據(jù)非常方便,Char字段的索引效率水平也很高。例如,define char(10),因此無論您存儲的數(shù)據(jù)是否達(dá)到10字節(jié),它都將占用10字節(jié)的空間。
2. Varchar:存儲可變長度的數(shù)據(jù),但是存儲效率沒有char高。如果一個字段的可能值不是固定長度,我們只知道它不能超過10個字符。將其定義為varchar(10)是最劃算的。
3. Nchar和nvarchar的名字比前三個多。這意味著存儲Unicode數(shù)據(jù)類型的字符。我們知道英文字符只需要一個字節(jié)來存儲,但是有許多中文字符需要兩個字節(jié)來存儲。當(dāng)英文和漢字同時存在時,很容易造成混淆。Unicode字符集的產(chǎn)生是為了解決字符集的不兼容問題。它的所有字符都用兩個字節(jié)來表示,也就是說,英文字符也用兩個字節(jié)來表示。
4. 用n可以存儲4000個字符,英文字母存在于n型中,也是按兩個字節(jié)計算的。不需要n就可以存儲8000個字符,英文字符按一個字節(jié),中文字符按兩個字節(jié)。一般來說,nchar/nvarchar用于漢字,char/varchar用于英文和數(shù)字。
數(shù)據(jù)庫中char, nchar,varchar, nvarchar的差異?
首先,這個問題不是很標(biāo)準(zhǔn)。一般來說,char和nchar,nvarchar和varchar是成對的!它們都代表字符,char和varchar在以前的版本中會出現(xiàn)亂碼問題,所以需要使用nchar和nvarchar來解決這個中文亂碼問題!但是char和varchar的當(dāng)前版本與中文兼容,也就是說,是否加n沒有區(qū)別。一些數(shù)據(jù)庫甚至消除了nchar和nvarchar。那么,這個char和varchar有什么區(qū)別?在數(shù)據(jù)庫中,您需要指定使用它們的長度!例如,你給他們所有10個字節(jié)的長度char(10)varchar(10),但在實際使用中,你許可使用5個字節(jié)。char type的長度不足時會用10個字節(jié)的空格填充,但varchar type在使用時只有5個字節(jié),不會用10個字節(jié)的空格填充。顯然,varchar是實際開發(fā)中使用最多的!例如,如果您的密碼類型是char(10),但是當(dāng)您設(shè)置密碼時,您只需要六個123456長度。登錄時只需輸入123456(實際上,沒有人會添加更多的空格,也不可能知道)。此時,您單擊“登錄”按鈕確認(rèn)實際密碼是錯誤的,因為您輸入的密碼沒有四個空格,即下面的數(shù)據(jù)庫密碼不匹配。但是用varchar(10),可以很好的解決這個問題,你設(shè)置的密碼只要長!這就是原則!歡迎有不同意見的it老板評論如下。