⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL 类型转换 CAST

学习CAST/CONVERT · 难度:进阶 · +15XP

SQL 类型转换 CAST

在数据库操作中,经常需要将一个数据类型的值转换为另一种类型。例如,将数字字符串 '123' 转换为整数参与计算,或者将整数转换为字符串进行拼接。SQL 通过 CAST 函数和 CONVERT 函数提供了类型转换的能力。正确的类型转换可以避免隐式转换带来的性能问题和意外错误,是编写健壮 SQL 的重要技能。

CAST 基本语法

-- ANSI SQL 标准语法
CAST(表达式 AS 目标类型)

-- 部分数据库的 CONVERT 语法 CONVERT(目标类型, 表达式)

常见类型转换示例

-- 整数转字符串
SELECT CAST(score AS TEXT) FROM students;
-- 结果: "85", "92", "78" (字符串格式)

-- 字符串转整数 SELECT CAST('123' AS INTEGER) + 10; -- 结果: 133

-- 整数转浮点数 SELECT CAST(score AS REAL) FROM students; -- 结果: 85.0, 92.0, 78.0

-- 日期字符串转日期类型 SELECT CAST('2024-01-15' AS DATE); -- PostgreSQL: 转换为DATE类型

类型转换的实际应用

以下是业务开发中常见的转换场景:

-- 1. 字符串拼接(需将数字转为文本)
SELECT name || '的分数是' || CAST(score AS TEXT) FROM students;
-- 结果: "张三的分数是85"

-- 2. 聚合计算时处理字符串存储的数字 SELECT SUM(CAST(price AS DECIMAL(10,2))) FROM orders;

-- 3. 比较时确保类型一致 SELECT * FROM products WHERE CAST(stock AS INTEGER) > 0;

其他类型转换函数

函数功能示例
CAST(x AS type)通用类型转换(SQL标准)CAST(score AS TEXT)
COALESCE(val, default)返回第一个非NULL值COALESCE(score, 0)
IFNULL(val, default)MySQL中NULL替换IFNULL(score, 0)
ROUND(val, n)四舍五入保留n位小数ROUND(92.567, 1) = 92.6
|| 或 CONCAT字符串拼接(自动转换)score || '分'

隐式转换 vs 显式转换

  1. 显式转换:使用 CAST/CONVERT 明确指定,代码可读性高,行为可预测
  2. 隐式转换:数据库自动完成,虽然省事但可能导致意外结果
  3. 建议:关键业务逻辑中始终使用显式转换,避免依赖隐式行为
  4. 性能影响:隐式转换可能导致索引失效(如字符串列与整数比较时)

实战任务

  1. 将 score 列转换为文本后与字符串拼接
  2. 将字符串 '456' 转为整数后与 100 相加
  3. 使用 COALESCE 将 NULL 分数替换为 0
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0