N字符在Sql Server字段類型中的主要性概述。本站提示廣大學習愛好者:(N字符在Sql Server字段類型中的主要性概述)文章只能為提供參考,不一定能成為您想要的結果。以下是N字符在Sql Server字段類型中的主要性概述正文
Unicode字符集就是為懂得決字符集這類不兼容的成績而發生的,它一切的字符都用兩個字節表現,即英文字符也是用兩個字節表現
假如還為了這個糾結,就直接看看前面的講解,做決議吧。
普通假如用到中文或許其它特別字符,我就會應用n開首的類型,不然的話直接應用var開首的。
sql server中的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
char varchar nvarchar差別
聯機贊助上的:
普通來講,假如含有中文字符,用nchar/nvarchar,假如純英文和數字,用char/varchar
**人很好的總結
許多開辟者停止數據庫設計的時刻常常並沒有太多的斟酌char, varchar類型,有的是基本就沒留意,由於存儲價錢變得愈來愈廉價了,忘卻了最開端的一些根本設計實際和准繩,這點讓我想到了如今的年青人,年夜手一揮 一把國民幣就從他手裡溜走了,其實我想不論是做人也好,做開辟也好,細節的掌握直接決議許多器械。固然還有一部門人是基本就沒弄清晰他們的差別,也就隨意 選一個。在這裡我想對他們做個簡略的剖析,固然假如有纰謬的處所願望年夜家指教。
1、CHAR。CHAR存儲定長數據很便利,CHAR字段上的索引效力級高,好比界說char(10),那末豈論你存儲的數據能否到達了10個字節,都要占去10個字節的空間,缺乏的主動用空格填充,所以在讀取的時刻能夠要屢次用到trim()。
2、VARCHAR。存儲變長數據,但存儲效力沒有CHAR高。假如一個字段能夠的值是 不固定長度的,我們只曉得它弗成能跨越10個字符,把它界說為 VARCHAR(10)是最合算的。VARCHAR類型的現實長度是它的值的現實長度+1。為何“+1”呢?這一個字節用於保留現實應用了多年夜的長度。 從空間上斟酌,用varchar適合;從效力上斟酌,用char適合,症結是依據現實情形找到衡量點。
3、TEXT。text存儲可變長度的非Unicode數據,最年夜長度為2^31-1(2,147,483,647)個字符。
4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比後面三種多了個 “N”。它表現存儲的是Unicode數據類型的字符。我們曉得字符中,英文字符只須要一個字節存儲就足夠了,但漢字浩瀚,須要兩個字節存儲,英文與漢字 同時存在時輕易形成凌亂,Unicode字符集就是為懂得決字符集這類不兼容的成績而發生的,它一切的字符都用兩個字節表現,即英文字符也是用兩個字節表 示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比擬起來,nchar、nvarchar則最多存儲4000個 字符,豈論是英文照樣漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出應用nchar、nvarchar數據類型時 不消擔憂輸出的字符是英文照樣漢字,較為便利,但在存儲英文時數目上有些喪失。
所以普通來講,假如含有中文字符,用nchar/nvarchar,假如純英文和數字,用char/varchar
我把他們的差別歸納綜合成:
CHAR,NCHAR 定長,速度快,占空間年夜,需處置
VARCHAR,NVARCHAR,TEXT 不定長,空間小,速度慢,無需處置
NCHAR、NVARCHAR、NTEXT處置Unicode碼
varchar在SQL Server中是采取單字節來存儲數據的,nvarchar是應用Unicode來存儲數據的.中文字符存儲到SQL Server中會保留為兩個字節(普通采取Unico編碼),英文字符保留到數據庫中,假如字段的類型為varchar,則只會占用一個字節,而假如字段 的類型為nvarchar,則會占用兩個字節.
正常情形下,我們應用varchar也能夠存儲中文字符,然則假如碰到操作體系是英文操 作體系而且對中文字體的支撐不周全時, 在SQL Server存儲中文字符為varchar就會湧現亂碼(顯示為??).並且正常情形下,主機都邑支撐中文的情況,所以假如應用varchar來存儲數 據,在開辟階段是發明不了的.
固然,應用nvarchar存儲英文字符會增年夜一倍的存儲空間.然則在存儲價值曾經很昂貴的情形下,優先斟酌兼容性會給你帶來更多利益的.
所以在Design的時刻應當盡可能應用nvarchar來存儲數據.只要在你確保該字段不會保留中文的時刻,才采取varchar來存儲.的時刻也不會有成績.
然則!假如布署的主機是英文操作體系,而且不支撐中文情況,那成績就出來了.一切的 varchar字段在存儲中文的時刻都邑釀成亂碼(顯示為??).並且普通情形下你不會曉得這是由於你采取了毛病的數據類型來存儲所形成的,你會試著去裝 中文字體,試著去設置操作體系的說話情況...這些都不克不及處理成績,獨一能處理成績的是把數據庫字段的類型特性為nvarchar(或許nchar).對 項目治理比擬熟習的同伙應當都曉得,到布署階段再來修正數據庫是一個很恐懼的工作.
應用nvarchar的另外一個異常利益就是在斷定字符串的時刻可以不須要斟酌中英文兩種字符的差異.