程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL中varchar和nvarchar的根本引見及其差別

SQL中varchar和nvarchar的根本引見及其差別

編輯:MSSQL

SQL中varchar和nvarchar的根本引見及其差別。本站提示廣大學習愛好者:(SQL中varchar和nvarchar的根本引見及其差別)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL中varchar和nvarchar的根本引見及其差別正文


varchar(n)

長度為 n 個字節的可變長度且非 Unicode 的字符數據。n 必需是一個介於 1 和 8,000 之間的數值。存儲年夜小為輸出數據的字節的現實長度,而不是 n 個字節。

nvarchar(n)

包括 n 個字符的可變長度 Unicode 字符數據。n 的值必需介於 1 與 4,000 之間。字節的存儲年夜小是所輸出字符個數的兩倍。

兩字段分離有字段值:我和coffee

那末varchar字段占2×2+6=10個字節的存儲空間,而nvarchar字段占8×2=16個字節的存儲空間。

如字段值只是英文可選擇varchar,而字段值存在較多的雙字節(中文、韓文等)字符時用nvarchar

下面是一個總結引見,經由過程下面的引見,可以曉得。

varchar(4) 可以輸出4個字母,也能夠輸出兩個漢字

nvarchar(4) 可以輸四個漢字,也能夠輸4個字母,但最多四個

char、varchar、nchar、nvarchar的差別

關於法式中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四品種型來對應(臨時不斟酌text和ntext),開樹立數據庫中,對這四品種型常常比擬隱約,這裡做一下比較。

定長或變長

所謂定長就是長度固定的,當輸出的數據長度沒有到達指定的長度時將主動以英文空格在厥後面填充,使長度到達響應的長度;有var前綴的,表現是現實存儲空間是變長的,好比varchar,nvarchar變長字符數據則不會以空格填充,比擬破例的是,text存儲的也是可變長。

Unicode或非Unicode

數據庫中,英文字符只須要一個字節存儲就足夠了,但漢字和其他浩瀚非英文字符,則須要兩個字節存儲。假如英文與漢字同時存在,因為占用空間數分歧,輕易形成凌亂,招致讀掏出來的字符串是亂碼。Unicode字符集就是為懂得決字符集這類不兼容的成績而發生的,它一切的字符都用兩個字節表現,即英文字符也是用兩個字節表現。而前綴n就表現Unicode字符,好比nchar,nvarchar,這兩品種型應用了Unicode字符集。

基於以上兩點來看看字段容量

char,varchar 最多8000個英文,4000個漢字
nchar,nvarchar 可存儲4000個字符,不管英文照樣漢字

應用(小我偏好)

假如數據量異常年夜,又能100%肯定長度且保留只是ansi字符,那末char
能肯定長度又紛歧定是ansi字符或許,那末用nchar;
關於超年夜數據,如文章內容,應用nText

其他的通用nvarchar

char、varchar、nchar、nvarchar特色比擬

CHAR

CHAR存儲定長數據很便利,CHAR字段上的索引效力級高,好比界說char(10),那末豈論你存儲的數據能否到達了10個字節,都要占去10個字節的空間。

VARCHAR

存儲變長數據,但存儲效力沒有CHAR高,假如一個字段能夠的值是不固定長度的,我們只曉得它弗成能跨越10個字符,把它界說為 VARCHAR(10)是最合算的。VARCHAR類型的現實長度是它的值的現實長度+1。為何"+1"呢?這一個字節用於保留現實應用了多年夜的長度。
從空間上斟酌,用varchar適合;從效力上斟酌,用char適合,症結是依據現實情形找到衡量點。

TEXT

text存儲可變長度的非Unicode數據,最年夜長度為2^31-1(2,147,483,647)個字符。

NCHAR、NVARCHAR、NTEXT

這三種從名字上看比後面三種多了個"N"。和char、varchar比擬起來,nchar、nvarchar最多存儲4000個字符,豈論是英文照樣漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出應用nchar、nvarchar數據類型時不消擔憂輸出的字符是英文照樣漢字,較為便利,但在存儲英文時數目上有些喪失。
所以普通來講,假如含有中文字符,用nchar/nvarchar,假如純英文和數字,用char/varchar。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved