您好!欢迎访问家园网-www.jy.wang!

家园网

SQl的排序规则中,Chinese_PRC_Stroke_CS_AS_KS_WS啥含义?Stroke代表啥?词源角度讲讲。另外,讲一下汉字简体的排序规则的所有情况

网络 作者:本站 点击:

SQl的排序规则中,Chinese_PRC_Stroke_CS_AS_KS_WS啥含义?

Stroke代表啥?词源角度讲讲。另外,讲一下汉字简体的排序规则的所有情况


这个问题非常深入,涉及语言学、计算机国际化和SQL Server的命名规范。我们来逐一拆解。


一、Chinese_PRC_Stroke_CS_AS_KS_WS 含义拆解

完整分解

text

Chinese_PRC_Stroke_CS_AS_KS_WS
   │       │     │   │   │   │
   │       │     │   │   │   └─ WS = Width-Sensitive(区分全角/半角)
   │       │     │   │   └───── KS = Kana-Sensitive(区分假名)
   │       │     │   └───────── AS = Accent-Sensitive(区分重音)
   │       │     └───────────── CS = Case-Sensitive(区分大小写)
   │       └─────────────────── Stroke = 笔画排序
   └─────────────────────────── Chinese_PRC = 中华人民共和国简体中文

整体含义

“中华人民共和国简体中文,按笔画排序,区分大小写,区分重音,区分假名,区分全角/半角”


二、Stroke 词源角度深度拆解

词源树

text

古英语 strīcan(抚摸、划过去)
  ↓
中古英语 strok(划、击打)
  ↓
现代英语 stroke(一笔、一击、中风)
  ↓
汉字书法 → stroke(笔画)
  ↓
计算机排序 → Stroke Sorting(按笔画排序)

详细词源路径

阶段

词形

含义

演变逻辑

原始日耳曼语

*strīkaną

划、抚摸

手部动作

古英语(450-1150)

strīcan

抚摸、划过

动作引申为“留下的痕迹”

中古英语(1150-1500)

strok

一击、一笔

“划的动作”到“划的结果”

现代英语(1500-今)

stroke

一击、一笔、中风

多义化

书法/汉字领域

stroke

笔画

借用“一笔”的概念

计算机排序

stroke order

笔画顺序

按汉字笔画的数目和顺序排序


为什么用 Stroke 而不是 Bihua

微软在命名时选择了英语词 Stroke,而不是汉语拼音 Bihua,原因:

  1. 国际化:SQL Server 是国际产品,面向全球开发者

  2. 标准化:Unicode 标准中就用 Stroke 表示汉字笔画

  3. 可读性:英语开发者能猜出大概意思

类比:

  • 日文排序用 Kana(假名),而不是 Kana 本身也是英语化拼写

  • 韩文排序用 Korean_Wansung,而不是 Hangeul


三、Stroke 在排序规则中的具体行为

按什么排?

Chinese_PRC_Stroke 按以下优先级排序:

优先级规则示例
1笔画数(少→多)一(1画) → 二(2画) → 三(3画) → 四(5画)
2笔画数相同,按笔顺(横竖撇捺折)十(2画) → 又(2画)?需要具体看笔顺规则
3再相同,按Unicode码位同笔画同笔顺的罕见字

实际示例

sql

-- 创建按笔画排序的列CREATE TABLE test_stroke (
    word nvarchar(10) COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS);INSERT INTO test_stroke VALUES ('一'), ('二'), ('三'), ('四'), ('五'), ('十'), ('又');SELECT * FROM test_stroke ORDER BY word;

排序结果(大致):

汉字笔画数排序位置
1画1
2画2
2画2(但可能在二之后,取决于笔顺)
2画2
3画5
4画6
5画7

对比拼音排序(Chinese_PRC_CI_AS):

  • 按拼音首字母:二(er) → 三(san) → 十(shi) → 四(si) → 五(wu) → 一(yi) → 又(you)


四、简体中文排序规则的所有情况

SQL Server 中简体中文相关的排序规则分为两大类:

分类总览

大类

子类

排序依据

代表名称

拼音排序

按拼音字母

读音

Chinese_PRC_CI_AS

笔画排序

按笔画数/笔顺

书写

Chinese_PRC_Stroke_CI_AS


完整列表(简体中文)

排序规则名称

排序方式

大小写

重音

假名

全角

Chinese_PRC_CI_AS

拼音

不区分

区分

不适用

不适用

Chinese_PRC_CS_AS

拼音

区分

区分

不适用

不适用

Chinese_PRC_BIN

二进制

严格

严格

严格

严格

Chinese_PRC_BIN2

二进制码位

严格

严格

严格

严格

Chinese_PRC_Stroke_CI_AS

笔画

不区分

区分

不适用

不适用

Chinese_PRC_Stroke_CS_AS

笔画

区分

区分

不适用

不适用


简体中文没有的后缀(为什么?)

后缀

含义

简体中文是否有

原因

_KS

区分假名

❌ 没有

假名是日文特有

_WS

区分全角

❌ 通常没有

简体中文规则通常不区分,但可手动加

_KI

不区分假名

❌ 没有

同上

_AI

不区分重音

❌ 没有

简体中文基本没有重音符号

注意: 你问的 Chinese_PRC_Stroke_CS_AS_KS_WS 中出现了 _KS 和 _WS,这是技术上合法的组合,但实际使用中 _KS 对中文无意义(因为没有假名),_WS 可能有效果但极少用。


五、拼音排序 vs 笔画排序 对比

对比维度

拼音排序

笔画排序

排序依据

读音(拼音字母顺序)

笔画数 + 笔顺

典型名称

Chinese_PRC_CI_AS

Chinese_PRC_Stroke_CI_AS

使用场景

字典、通讯录、搜索

书法、古籍整理、字库

用户预期

大多数人习惯

专业领域

性能

稍慢(笔画计算复杂)

多音字问题

会有歧义

无歧义

多音字问题示例

拼音排序下,"重庆" 可能被排在 "chong" 还是 "zhong"?取决于系统词库。

笔画排序下,"重" 是 9 画,固定位置,无歧义。


六、如何查看所有简体中文排序规则

sql

-- 查看所有简体中文相关的排序规则SELECT * FROM ::fn_helpcollations()WHERE name LIKE 'Chinese_PRC%'ORDER BY name;

结果大致为:

namedescription
Chinese_PRC_BINChinese-PRC, binary sort
Chinese_PRC_BIN2Chinese-PRC, binary code point
Chinese_PRC_CI_ASChinese-PRC, case-insensitive...
Chinese_PRC_CS_ASChinese-PRC, case-sensitive...
Chinese_PRC_Stroke_CI_ASChinese-PRC, stroke, case-insensitive...
Chinese_PRC_Stroke_CS_ASChinese-PRC, stroke, case-sensitive...

七、总结

问题答案
Stroke 词源古英语 strīcan(划)→ 书法术语(一笔)→ 汉字笔画
为什么用 Stroke国际化命名,Unicode 标准用语
笔画排序规则先按笔画数,再按笔顺,再按码位
简体中文排序大类拼音排序(默认)、笔画排序(_Stroke)、二进制排序(_BIN
简体中文没有的后缀_KS(假名)、_AI(重音)等

一句话:Stroke 是从古英语“划一笔”演变来的词,在 SQL Server 里代表“按汉字笔画数排序”——这是给拼音排序之外的另一套中文排序逻辑,主要用于书法、字典等专业场景


标签: