这个PRC是啥,啥意思,词源角度讲一下
CREATE TABLE tb_name( id int IDENTITY (1,1) NOT NULL, name varchar (50) COLLATE Chinese_PRC_CI_AS NULL )
好,从词源角度拆解 PRC 在这个 SQL 语句里的来龙去脉。
词源三层拆解
第一层:字母本身
PRC = People's Republic of China
这三个字母直接借用了联合国/国际政治中对“中华人民共和国”的标准英文缩写。
第二层:为什么 SQL Server 要用政治缩写?
这就要说到微软在 1990 年代设计 SQL Server 7.0/2000 时的历史背景:
| 时间 | 事件 |
|---|---|
| 1949 年 | 中华人民共和国成立,英文名定为 People's Republic of China |
| 1971 年 | 联合国恢复中华人民共和国合法席位,PRC 成为官方缩写 |
| 1990 年代 | 微软开发 SQL Server 7.0 和 2000,需要给不同地区的排序规则命名 |
微软当时的命名逻辑很简单粗暴:
“用一个全球都认的、不会产生歧义的短代码来代表‘中国大陆简体中文’”
候选方案:
CHS(Chinese Simplified)→ 太技术化,不够“地区化”CN(中国 ISO 国家代码)→ 后来被用了,但早期没统一PRC→ 政治缩写,国际通用,不会和台湾/香港混淆 ✅ 选中
关键点: 当时台湾地区用的是 Chinese_Taiwan,香港回归前用的是 Chinese_Hong_Kong。用 PRC 可以明确区分“中华人民共和国”和“台湾/香港”的排序规则。
第三层:Chinese_PRC 这个词的构造逻辑
text
Chinese_PRC_CI_AS │ │ │ │ │ └─ AS = Accent-Sensitive(区分重音) │ └──── CI = Case-Insensitive(不区分大小写) └──────────── 语言_地区
Chinese 表示语言家族(中文)PRC 表示地区变体(中华人民共和国用的那一套)
类似命名的例子:
| 排序规则 | 含义 |
|---|---|
Chinese_Taiwan | 台湾地区用的繁体中文规则 |
Chinese_Hong_Kong | 香港地区用的繁体中文规则 |
Chinese_Singapore | 新加坡用的简体中文规则 |
French_France | 法国用的法语规则 |
French_Belgium | 比利时用的法语规则 |
English_US | 美国用的英语规则 |
English_UK | 英国用的英语规则 |
模式: 语言_地区 → 表示“这个地区的这个语言怎么写、怎么排、怎么比”
历史小插曲:为什么不直接用 CN?
ISO 3166 国家代码中,中国的两字母代码是 CN,三字母是 CHN。
但微软早期命名时:
CN已经被用在别的地方(比如系统区域设置 LCID)三字母
CHN不够直观,一般人不知道PRC在国际政治语境中已经非常成熟,直接拿来用更省事
所以这是个政治缩写进入技术命名的典型案例。
现在的演变
SQL Server 2005 之后,微软引入了更规范的 .NET 文化名称:
| 老名字 | 新名字(LCID) |
|---|---|
Chinese_PRC | zh-CN(中文-中国) |
Chinese_Taiwan | zh-TW(中文-台湾) |
Chinese_Hong_Kong | zh-HK(中文-香港) |
但为了向后兼容,Chinese_PRC 这种老写法仍然能用。
总结(词源角度)
PRC是从国际政治领域借来的缩写,用来在 1990 年代的技术命名中,无歧义地指代“中华人民共和国使用的简体中文规则”。
它经历了:
text
政治缩写(联合国/外交) → 借用到数据库排序规则命名(SQL Server 7.0) → 成为事实标准(无数 Chinese_PRC 建表语句) → 被新版 zh-CN 取代(但老代码里遍地都是)
所以你现在看到的 Chinese_PRC,本质上是一块1990 年代政治与技术交织的活化石