SQL 中 CAST() 函数详解(词源角度)
一、CAST() 是什么?
CAST() 是 SQL 中的类型转换函数,用于将一个数据类型的值转换为另一个数据类型。
sql
SELECT CAST('123' AS INT); -- 字符串 → 整数,结果:123SELECT CAST(3.14 AS VARCHAR); -- 小数 → 字符串,结果:'3.14'SELECT CAST('2024-04-15' AS DATE); -- 字符串 → 日期二、词源拆解
| 单词 | 词源 | 含义 |
|---|---|---|
| CAST | 古挪威语 kasta(扔、投掷) | 投射、铸造、转换 |
词源演变
text
古挪威语 kasta(扔、投掷) ↓ 古英语 casten(扔、投掷、铸造) ↓ 现代英语 cast(投射、铸造、分配角色) ↓ 计算机科学 cast(数据类型转换)
三、cast 的原始含义与编程用法的关联
| 领域 | 含义 | 与 SQL CAST 的关联 |
|---|---|---|
| 冶金 | 将熔化的金属倒入模具,铸造成新形状 | 将一种数据类型"重塑"为另一种 |
| 戏剧 | 给角色分配演员 | 给值"分配"新的类型 |
| 光线 | 投射影子或光线 | 将值"投射"到新类型中 |
| 编程 | 转换数据类型 | 直接来源 |
核心比喻:就像把铁水倒进模具"铸造成"新形状一样,CAST() 把一个值"铸造"成新的数据类型。
四、语法
sql
CAST(expression AS target_type)
| 部分 | 含义 |
|---|---|
expression | 要转换的值(可以是字段、常量、计算结果) |
AS | 作为、成为(同样源自古英语) |
target_type | 目标数据类型(如 INT、VARCHAR、DATE) |
五、CAST vs CONVERT
| 对比项 | CAST | CONVERT |
|---|---|---|
| 词源 | 古挪威语 kasta(铸造) | 拉丁语 convertere(转变) |
| 标准 | SQL 标准 | SQL Server 特有 |
| 语法 | CAST(值 AS 类型) | CONVERT(类型, 值, 格式) |
| 格式控制 | ❌ 不支持 | ✅ 支持(如日期格式) |
sql
-- CAST(标准写法)SELECT CAST(GETDATE() AS VARCHAR);-- CONVERT(SQL Server 特有,可指定格式)SELECT CONVERT(VARCHAR, GETDATE(), 120); -- 120 = yyyy-mm-dd hh:mi:ss
六、同源词示例
| 单词 | 词源 | 含义 | 与 CAST 的关系 |
|---|---|---|---|
| cast | 古挪威语 kasta | 投掷、铸造、投射 | 本词 |
| castaway | cast + away | 被抛弃的人 | 被"扔"掉的人 |
| caste | 葡萄牙语 casta | 种姓 | 被"分配"的社会阶层 |
| forecast | fore + cast | 预测 | 提前"投掷"想法 |
| broadcast | broad + cast | 广播 | 广泛"投掷"信号 |
| podcast | iPod + broadcast | 播客 | 数字"广播" |
七、常见用法示例
1、字符串转数字
sql
SELECT CAST('123' AS INT); -- 123SELECT CAST('123.45' AS DECIMAL(5,2)); -- 123.452、数字转字符串
sql
SELECT CAST(123 AS VARCHAR); -- '123'SELECT CAST(123.45 AS VARCHAR(10)); -- '123.45'
3、字符串转日期
sql
SELECT CAST('2024-04-15' AS DATE); -- 2024-04-154、日期转字符串
sql
SELECT CAST(GETDATE() AS VARCHAR); -- 'Apr 15 2024 2:30PM'
5、在计算中使用
sql
-- 整数除法默认返回整数,先转换再除SELECT CAST(5 AS DECIMAL) / 2; -- 2.5SELECT 5/2; -- 2(整数除法)
八、CAST 字面意义的形象化
text
原始数据 CAST 铸造 目标类型 ═══════════════════════════════════════════════════════════════ '123' ──────────→ 123 (字符串) 铸造模具 (整数) 3.14 ──────────→ '3.14' (小数) 铸造模具 (字符串) '2024-04-15' ──────────→ 2024-04-15 (字符串) 铸造模具 (日期类型)
就像把铁水倒入不同的模具铸造成不同形状,CAST() 把数据倒入"类型模具"铸造成不同的数据类型。
九、总结
| 问题 | 答案 |
|---|---|
CAST() 是什么? | SQL 类型转换函数 |
| 词源 | 古挪威语 kasta(扔、投掷、铸造) |
| 字面含义 | 铸造、重塑形状 |
| 编程含义 | 将一种数据类型"铸造"成另一种 |
与 CONVERT 区别 | CAST 是 SQL 标准,CONVERT 是 SQL Server 特有(可控制格式) |
| 同源词 | broadcast(广播)、forecast(预测)、podcast(播客) |
一句话总结:CAST() 的词源来自古挪威语的"铸造"(把金属熔化后倒入模具成型),在 SQL 中意为将一个数据值"铸造"成新的数据类型——就像把数据倒进不同类型的模具,改变它的"形状"(数据类型)