Char/NChar/VarChar/NVarChar/Text/NText,這幾個資料型別或許有些人很熟,有些人只熟其中幾個,尤其是程式設計師,不碰DB Design的,如果有碰到,也可能依"慣例"的去設定資料型別,所以不難看見,有些Table資料型別很單調,看的到的型別不多,只要是存文字的,都是 NVarChar,或許在瞭解後,可以做出更好的規劃.
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)是一樣的.
在MSDN的Char與VarChar的備註有點問題:
如果您有支援多國語言的網站,請考慮利用 Unicode nchar 或 nvarchar 資料類型,將字元轉換問題減到最少。如果您使用 char 或 varchar,我們建議您執行下列動作:
- 當資料行資料項目的大小不一致時,請使用 char。
- 當資料行資料項目的大小變化相當大時,請使用 varchar。
- 當資料行資料項目的大小變化相當大,且大小可能超出 8,000 位元組時,請使用 varchar(max)。
紅色的那一段,應該是”當資料行資料項目的大小一致時,請使用char。”
見英文版:
Use char when the sizes of the column data entries are consistent.
在底下有個Data Type Performance Tuning Tips for Microsoft SQL Server,這是個不錯的參考網站~
當然DB裡還有相當多的型別,這裡就只大概針對Char做了一點說明,其它就參考MSDN上的說明.
參考 :
ntext、text 和 image (Transact-SQL)
Data Type Performance Tuning Tips for Microsoft SQL Server