国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

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

2020-07-25 13:06:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

1.定長(zhǎng)或變長(zhǎng)

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

2.Unicode或非Unicode

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

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

char,varchar 最多8000個(gè)英文,4000個(gè)漢字

nchar,nvarchar  最多可存儲(chǔ)4000個(gè)字符,無(wú)論英文還是漢字

復(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,'無(wú)風(fēng)聽(tīng)海','無(wú)風(fēng)聽(tīng)海','無(wú)風(fēng)聽(tī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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 常德市| 岱山县| 秀山| 和田县| 公主岭市| 晋城| 灵台县| 新干县| 惠来县| 壶关县| 巨野县| 镇赉县| 灌南县| 盖州市| 崇义县| 怀远县| 庆阳市| 扶沟县| 定远县| 宿松县| 平山县| 德保县| 陈巴尔虎旗| 共和县| 崇义县| 德保县| 巴彦淖尔市| 金华市| 吉安县| 信宜市| 独山县| 丹江口市| 宁武县| 襄垣县| 昌都县| 普安县| 三门县| 新丰县| 安吉县| 黄梅县| 荔波县|