2015年3月20日 星期五

mssql資料型態介紹: nvarchar, ntext


n        unicode
var     非固定長度,4000字以內的文字
ntext  unicode,4000字以上的文字


varchar
長度為 n 個字元之可變長度非 Unicode 字元資料。n 必須介於 1 至 8,000,儲存大小為實際輸入資料的長度,而非 n 個位元組。輸入的資料長度可以是 0 字元。

ntext
可變長度的 Unicode 資料,最大長度為 2^30 - 1 (1,073,741,823) 個字元。


適用時機:
varchar:
當你的字元長度少於8000個字元,且字元內容無須以 unicode 格式儲存時,可選擇varchar 註:一個中文字及一個英文字母皆算一個字元

ntext:
在 SQL Server 中,Unicode 資料是使用 nchar、nvarchar 和 ntext 資料型別來儲存。設成這些資料型別的資料行可儲存來自多個字元集的字元。若資料行項目所包含的 Unicode 字元個數並不一致 (最多為 4,000) ,請使用 nvarchar。若資料行每個項目的長度是固定的 (最多為 4,000 個 Unicode 字元),請使用 nchar。若資料行的任何項目長度超過 4,000 個 Unicode 字元,則使用 ntext。



這篇教學文章寫得很好(出處 http://www.dotblogs.com.tw/jeff-yeh/archive/2010/11/14/19440.aspx)

認識Char/NChar/VarChar/NVarChar/Text/NText


Char/NChar/VarChar/NVarChar/Text/NText,這幾個資料型別或許有些人很熟,有些人只熟其中幾個,尤其是程式設計師,不碰DB Design的,如果有碰到,也可能依"慣例"的去設定資料型別,所以不難看見,有些Table資料型別很單調,看的到的型別不多,只要是存文字的,都是NVarChar,或許在瞭解後,可以做出更好的規劃.
其實這個的識別方式很簡單.


  • 帶Var的 : 代表就是非固定長度的型別,所以Var在存不固定長度的資料時,會較省空間,
  • 帶N的 : 就是支援Unicode,但要注意,儲存的資料會大兩倍.

這樣就把Char全部講完,剩Text跟Char有什麼不同,Text的特性跟VarChar一樣,只是用來儲存大量的文字資料,但後來的VarChar也做了調整,也可以存大量的文字資料,所以Text在未來新版的DB會移除.


  • Char的長度為1~8000
  • VarChar的長度為1~8000,如果是VarChar(max)就是2^31-1 位元組,VarChar(max)只有SQL2005(含)以上才支援,SQL2000就沒有.
  • Text的長度為2^31-1,它的長度跟VarChar(max)是一樣的.


如果您有支援多國語言的網站,請考慮利用 Unicode nchar 或 nvarchar 資料類型,將字元轉換問題減到最少。如果您使用 char 或 varchar,我們建議您執行下列動作:

  • 當資料行資料項目的大小一致時,請使用 char。
  • 當資料行資料項目的大小變化相當大時,請使用 varchar。
  • 當資料行資料項目的大小變化相當大,且大小可能超出 8,000 位元組時,請使用 varchar(max)。



沒有留言:

張貼留言