在?SQL Server?中,VARCHAR(20)?和?NVARCHAR(20)?到底有什么區別
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
用最清楚、最實用的方式告訴你:在 SQL Server 中, ? 1. 本質區別:是否 Unicode(能否存中文)
? 記住一句話:
? 2. VARCHAR 存中文可能亂碼或報錯例如數據庫編碼是 Latin1 / SQL_Latin1(不支持中文),執行: 如果列類型是:
? 3. 占用空間對比
|
?? 特別說明:
SQL Server NVARCHAR 是 UTF?16 BMP 區間,不支持 Emoji 等補充字符,存時需要特殊處理(可以存成NVARCHAR(MAX)+ surrogate pair)。
VARCHAR 更省空間 → 緩存命中率稍高NVARCHAR 解碼成本稍大但一般業務中差異小到可以忽略不計。
關鍵是是否需要支持多語言。
VARCHAR依賴 數據庫/表/列的 Collation。
例如:
Chinese_PRC_CI_AS → 支持中文SQL_Latin1_General_CP1_CI_AS → 不支持中文所以如果數據庫 Collation 是西歐語系,你的 VARCHAR 根本放不了中文。
而:
NVARCHAR永遠不受 Collation 的代碼頁限制,永遠能存中文。
閱讀原文:原文鏈接