LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

在 SQL Server 中,VARCHAR(20) 和 NVARCHAR(20) 到底有什么区别

admin
2026年3月20日 21:51 本文热度 18

最清楚、最实用的方式告诉你:在 SQL Server 中,VARCHAR(20) 和 NVARCHAR(20) 到底有什么区别、该怎么选、踩坑点在哪里


✅ 1. 本质区别:是否 Unicode(能否存中文)

类型
是否 Unicode
能否存中文/Emoji
每个字符占用的空间
VARCHAR(n)
❌ 否
❌ 不可靠(看代码页)
1 字节/字符
NVARCHAR(n)
✅ 是
✅ 完全支持
2 字节/字符

✨ 记住一句话:

NVARCHAR 才能保证任何语言不乱码;VARCHAR 受数据库 Collation 限制。


✅ 2. VARCHAR 存中文可能乱码或报错

例如数据库编码是 Latin1 / SQL_Latin1(不支持中文),执行:

INSERT INTO T(NameVALUES('中文');

如果列类型是:

  • VARCHAR(20) → 写入时转换失败或变成乱码
  • NVARCHAR(20) → 始终正确存储

✅ 3. 占用空间对比

VARCHAR(20)

  • 中文会被“编码失败”,不是多字节!
  • VARCHAR(n) 的 n 是字节,不是字符。能够存多少“字符”取决于编码。
  • 英文 1 字节 → 最多 n 个字符
  • 中文 2 字节 → 最多 n/2 个字符
  • 混合内容按实际字节求和。
  • 最多可存 20 个单字节字符

NVARCHAR(20)

  • 最多可存 20 个字符(不论中英文)

  • 占用空间是 20 * 2 = 40 字节

  • NVARCHAR(n) 的 n 是字符数。永远最多存 n 个字符(中英文一样)。

所以,如果你要存大量英文日志、URL、Token、JSON,VARCHAR 更节省空间。


✅ 4. 存储长度(千万别被 NVARCHAR 限制骗了)

⚠ NVARCHAR(20) ≠ 20 字节,而是能装 20 个 Unicode 字符

但 VARCHAR(20) 与 NVARCHAR(20) 功能上的最大差别不是长度,而是 是否支持国际字符

例如:

字符串
VARCHAR(20)
NVARCHAR(20)
"HelloWorld"
✔ 正常
✔ 正常
"你好世界"
❌ 不能保证(乱码/报错)
✔ 正常
"Hello中国"
❌ 可能出错
✔ 正常
Emoji 😂
❌ 不支持
❌ 注意! SQL Server NVARCHAR 不支持 Emoji(需要 UTF-8)

🟡 特别说明:
SQL Server NVARCHAR 是 UTF‑16 BMP 区间,不支持 Emoji 等补充字符,存时需要特殊处理(可以存成 NVARCHAR(MAX) + surrogate pair)。


✅ 5. 性能差异(通常可忽略)

  • VARCHAR 更省空间 → 缓存命中率稍高
  • NVARCHAR 解码成本稍大

但一般业务中差异小到可以忽略不计。

关键是是否需要支持多语言。


✅ 6. 与 Collation 的关系(重点!)

VARCHAR依赖 数据库/表/列的 Collation。

例如:

  • Chinese_PRC_CI_AS → 支持中文
  • SQL_Latin1_General_CP1_CI_AS → 不支持中文

所以如果数据库 Collation 是西欧语系,你的 VARCHAR 根本放不了中文。

而:

NVARCHAR永远不受 Collation 的代码页限制,永远能存中文。


✅ 7. 实际开发怎么选?

✔ 建议选择 NVARCHAR 的场景:

  • 存中文、日文、韩文
  • 人名、地址、公司名
  • 备注、描述字段
  • Web / 移动端输入
  • 接收外部系统的数据(避免乱码)

✔ 建议选择 VARCHAR 的场景:

  • 全英文内容(URL、JSON、Token)
  • 大量日志文本(英文)
  • 系统内部字段,不接受用户输入
  • 非中文系统,为节省大量空间

🎯 总结(最重要的三句话)

  1. 要支持中文,一律用 NVARCHAR。
  2. VARCHAR 依赖 Collation,跨系统容易乱码。
  3. NVARCHAR(20) 占用 40个字节,可以存储20个字符,不论中英文。
  4. VARCHAR(20) 存储占用20个单字节,最多可存 20 个单字节字符,比如20个英文字符(在中英文混合模式下具体取决于编码方式)


阅读原文:原文链接


该文章在 2026/3/23 12:03:34 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved