好,从词源角度拆解 fn_helpcollations() 这个函数名的来历和构造逻辑。
逐词拆解
text
fn _ help collations ( ) │ │ │ │ │ │ │ └─ 复数后缀 │ │ └────── 核心动词 │ └────────── 分隔符(下划线) └─────────────── 前缀
第一层:fn = function(函数)
词源: 编程领域的通用缩写
| 语言/系统 | 缩写 | 全称 |
|---|---|---|
| C 语言 | fn | function(早期命名习惯) |
| Pascal | fn | function |
| SQL Server | fn_ | 系统函数前缀 |
| 数学 | f(x) | function |
为什么用 fn 而不是 func?
早期编程内存宝贵,能省一个字母是一个
fn是 1980-1990 年代程序员的标准简写SQL Server 7.0(1998 年)设计时沿用了这个习惯
类比:
fn_dblog→ function database logfn_helpcollations→ function help collationsfn_trace_getinfo→ function trace get info
第二层:help = 帮助(动词词源)
词源: 古英语 helpan(帮助),日耳曼语系
进入计算机术语的路径:
text
古英语 helpan(帮助) → 命令行时代的 help 命令(DOS、Unix) → 软件内置的"帮助系统" → SQL Server 的"返回信息"类函数
在 fn_helpcollations 中,help 的意思是:
“请告诉我关于...的信息”
类似用法的 SQL Server 函数:
sp_help→ 帮助查看表结构sp_helptext→ 帮助查看存储过程代码fn_helpcollations→ 帮助查看排序规则
命名逻辑: help + 名词 = “返回关于这个名词的元数据/列表”
第三层:collations = 排序规则(拉丁语词源)
这是最深的一层,要追溯到拉丁语。
词源树
text
拉丁语 conferre(聚集、比较) ↓ 过去分词 collatus(被聚集的、被比较的) ↓ 中世纪拉丁语 collatio(比较、汇集) ↓ 古法语 collation(比较、核对) ↓ 英语 collation(比较、排序、校对) ↓ SQL Server collation(字符排序和比较规则)
详细拆解
| 阶段 | 词 | 含义 |
|---|---|---|
| 拉丁语 | con- | 一起、共同 |
| 拉丁语 | ferre | 携带、拿、比较 |
| 拉丁语 | collatus | 被带到一起的、被比较过的 |
| 中世纪拉丁语 | collatio | 比较、汇集、讨论 |
| 古法语 | collation | 比较、核对(文本) |
| 英语(印刷) | collation | 校勘、核对版本 |
| 英语(图书馆) | collation | 整理书页顺序 |
| 计算机 | collation | 字符串排序和比较规则 |
为什么数据库用这个词?
在数据库之前,collation 主要用于:
印刷/出版:校对多个手稿,找出差异(比较文本)
图书馆学:整理书页顺序(排序)
语言学:比较不同文字系统的规则
数据库借用了这个已有 2000 年历史的词,表示:
“如何比较和排序字符串的一套规则”
完整词源路径图
text
公元前 100 年(拉丁语) con- (一起) + ferre (携带) = conferre (聚集比较) ↓ 公元 200 年(拉丁语) collatus (被聚集、被比较) ↓ 公元 500 年(中世纪拉丁语) collatio (比较、汇集) ↓ 公元 1100 年(古法语) collation (核对、比较) ↓ 公元 1400 年(英语) collation (文本校勘) ↓ 公元 1800 年(图书馆学) collation (整理排序) ↓ 公元 1970 年(计算机科学) collation (字符排序算法) ↓ 公元 1998 年(SQL Server 7.0) fn_helpcollations() 函数
为什么叫 fn_helpcollations 而不是其他名字?
| 候选名字 | 为什么没用 |
|---|---|
sp_list_collations | sp_ 是存储过程,这是函数 |
fn_get_collations | 太啰嗦,help 更简洁 |
fn_show_collations | show 偏向显示,help 偏向信息查询 |
fn_collations | 没有动词,不直观 |
sys.collations | 后来新版确实有了这个视图,但老函数保留 |
微软的命名习惯:
fn_+ 动词 + 名词 = 表值函数动词优先用
help(信息查询)、get(获取)、db(数据库相关)
跨语言对比
语言/数据库 | 类似功能的名称 | 词源特点 |
SQL Server | fn_helpcollations | 英语 + 拉丁语 |
MySQL | SHOW COLLATION | 纯英语命令 |
PostgreSQL | pg_collation | 希腊前缀 pg_ |
Oracle | NLS_SESSION_PARAMETERS | 缩写堆叠 |
Python | locale.collation | 从拉丁语直接借 |
总结
fn_helpcollations是一个 1990 年代程序员用英语缩写fn、英语动词help、和 2000 年历史的拉丁语collation拼出来的名字。
text
fn = 1990s 编程缩写(实用主义) help = 古英语日耳曼词根(用户友好) collations = 拉丁语借词,经印刷→图书馆→计算机(学术传统)
这个函数名就像 SQL Server 本身的性格:
实用(
fn省字母)友好(
help帮助)传统(
collation两千年历史)
下次你看到 fn_helpcollations(),就知道你看到的不是一个简单的函数名,而是一块跨越两千年的语言化石