首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 字符串數據類型全景:CHAR、VARCHAR、NCHAR、NVARCHAR 選型指南

     編輯:關於SqlServer

字符串類型決定字段如何存儲、處理、顯示。SQL-92 定義標準,各廠商在長度上限、編碼處理上差異巨大。

四大標準字符串類型

類型長度編碼存儲特點適用場景
CHAR(n)固定 n單字節/雙字節右填空格,比較時忽略尾部空格固定長度代碼(ISO 國家碼、狀態碼)
VARCHAR(n)可變 ≤ n單字節實際長度+1-2 字節開銷通用短文本(姓名、地址、描述)
NCHAR(n)固定 nUnicode (UTF-16)雙字節固定,支持全字符集多語言固定長度字段
NVARCHAR(n)可變 ≤ nUnicode (UTF-16)雙字節可變,國際化首選多語言通用文本

長度參數 n 的上限演進

  • SQL Server 2000: 8000
  • SQL Server 2005+: 8000 / MAX (2GB)
  • Oracle: 4000 / CLOB
  • MySQL: 65535 (行長度共享) / TEXT
  • PostgreSQL: 1GB (無硬性上限)

選型決策樹

  1. 需存儲多語言/Emoji/生僻字?→ NVARCHAR
  2. 純 ASCII/拉丁字母且長度固定?→ CHAR
  3. 純 ASCII/拉丁字母且長度可變?→ VARCHAR
  4. 長度可能超過 8000?→ VARCHAR(MAX) / NVARCHAR(MAX) / TEXT / CLOB

性能與存儲細節

  • CHAR 更新不產生頁分裂,但浪費空間
  • VARCHAR 更新可能導致行移動/頁分裂,需預留填充因子
  • 索引鍵長度限制:SQL Server 900 字節,NVARCHAR(450) 可建索引,NVARCHAR(451) 不可
  • COLLATE 影響比較/排序/索引,跨庫遷移必須對齊排序規則
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved