欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別

 更新時間:2013年05月03日 08:55:09   作者:  
對于程序中的一般字符串類型的字段,SQL Server中有char、varchar、nchar、nvarchar四種類型來對應(yīng),那么這四種類型有什么區(qū)別呢,這里做一下對比

對于程序中的一般字符串類型的字段,SQL Server中有char、varchar、nchar、nvarchar四種類型來對應(yīng),那么這四種類型有什么區(qū)別呢,這里做一下對比。

1.定長或變長

所謂定長就是長度固定,當(dāng)要保存的數(shù)據(jù)長度不夠時將自動在其后面填充英文空格,使長度達(dá)到相應(yīng)的長度;有var前綴的,表示是實(shí)際存儲空間是動態(tài)變化的,比如varchar,nvarchar變長字符數(shù)據(jù)則不會以空格填充。

2.Unicode或非Unicode

數(shù)據(jù)庫中,英文字符只需要一個字節(jié)存儲就足夠了,但漢字和其他眾多非英文字符,則需要兩個字節(jié)存儲。如果英文與漢字同時存在,由于占用空間數(shù)不同,容易造成混亂,導(dǎo)致讀取出來的字符串是亂碼。Unicode字符集就是為了解決字符集這種不兼容的問題而產(chǎn)生的,它所有的字符都用兩個字節(jié)表示,即英文字符也是用兩個字節(jié)表示。而前綴n就表示Unicode字符,比如nchar,nvarchar,這兩種類型使用了Unicode字符集。

3.幾種數(shù)據(jù)類型的存儲的最大容量

char,varchar 最多8000個英文,4000個漢字

nchar,nvarchar  最多可存儲4000個字符,無論英文還是漢字

復(fù)制代碼 代碼如下:

--創(chuàng)建表
CREATE TABLE TempTable(
    id INT PRIMARY KEY,
    charField CHAR(10),
    varcharField VARCHAR(10),
    nvarcharField NVARCHAR(10)
)

INSERT INTO TempTable VALUES(1,'WFTH','WFTH','WFTH') 
INSERT INTO TempTable VALUES(2,'無風(fēng)聽海','無風(fēng)聽海','無風(fēng)聽海')
INSERT INTO TempTable VALUES(3,'','','')
INSERT INTO TempTable(id) VALUES(4)
INSERT INTO TempTable VALUES(5,'1234567890','1234567890','12345')

SELECT DATALENGTH(charField) AS charFieldLen,
       DATALENGTH(varcharField) AS varcharFieldLen,
       DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =1

SELECT DATALENGTH(charField) AS charFieldLen,
       DATALENGTH(varcharField) AS varcharFieldLen,
       DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =2

SELECT DATALENGTH(charField) AS charFieldLen,
       DATALENGTH(varcharField) AS varcharFieldLen,
       DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =3

SELECT DATALENGTH(charField) AS charFieldLen,
       DATALENGTH(varcharField) AS varcharFieldLen,
       DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =4

SELECT DATALENGTH(charField) AS charFieldLen,charField,
       DATALENGTH(varcharField) AS varcharFieldLen,varcharField,
       DATALENGTH(nvarcharField) AS nvarcharFieldLen,nvarcharField
FROM temptable WHERE id =5

相關(guān)文章

最新評論