佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別

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

熱門標簽:鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 呼叫中心市場需求 地方門戶網(wǎng)站 百度競價排名 AI電銷 服務外包 Linux服務器

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

1.定長或變長

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

2.Unicode或非Unicode

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

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

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

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

復制代碼 代碼如下:

--創(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,'無風聽海','無風聽海','無風聽海')
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

您可能感興趣的文章:
  • sql中varchar和nvarchar的區(qū)別與使用方法
  • 過程需要參數(shù) ''@statement'' 為 ''ntext/nchar/nvarchar'' 類型
  • Sqlserver中char,nchar,varchar與Nvarchar的區(qū)別分析
  • 深入char、varchar、text和nchar、nvarchar、ntext的區(qū)別詳解
  • SQL2005中char nchar varchar nvarchar數(shù)據(jù)類型的區(qū)別和使用環(huán)境講解
  • SQL Server數(shù)據(jù)類型char、nchar、varchar、nvarchar的區(qū)別淺析
  • SQL中varchar和nvarchar的基本介紹及其區(qū)別
  • mysql如何處理varchar與nvarchar類型中的特殊字符

標簽:黃山 銅川 湖南 仙桃 崇左 蘭州 湘潭 衡水

巨人網(wǎng)絡通訊聲明:本文標題《基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    平南县| 株洲县| 都匀市| 从江县| 无为县| 万源市| 北海市| 黄骅市| 杭州市| 保靖县| 哈密市| 社旗县| 两当县| 邢台县| 辽阳市| 柳江县| 西城区| 和政县| 从江县| 迭部县| 文登市| 鱼台县| 濉溪县| 赞皇县| 灵武市| 蚌埠市| 普兰店市| 分宜县| 万源市| 彰化市| 杨浦区| 天气| 株洲县| 阳东县| 中山市| 晋中市| 华阴市| 都匀市| 龙山县| 祁东县| 鲁山县|