SQL 常用数据格式化操作方法总结
数据格式化是把日期、数字、字符串 转换成易读、统一格式的核心操作,几乎所有查询都会用到。包含字符串、数字、日期、空值处理、类型转换五大类。
一、字符串格式化(文本处理)
用于清洗、拼接、截取、替换字符串
| 函数 | 作用 | 示例 |
|---|---|---|
UPPER() |
转大写 | UPPER(name) → ZHANG |
LOWER() |
转小写 | LOWER(name) → zhang |
CONCAT() |
拼接字符串 | CONCAT(姓, ' ', 名) |
SUBSTRING() |
截取字符 | SUBSTRING(phone,1,3) 取前3位 |
TRIM() |
去除首尾空格 | TRIM(address) |
REPLACE() |
替换内容 | REPLACE(info,'旧','新') |
LEFT()/RIGHT() |
左/右截取 | LEFT(phone,3) |
二、数字格式化(保留小数、补零、取整)
用于金额、百分比、数值显示规范
| 函数 | 作用 | 示例 |
|---|---|---|
ROUND() |
四舍五入 | ROUND(price,2) 保留2位小数 |
TRUNCATE() |
截断不四舍五入 | TRUNCATE(3.1415,2) → 3.14 |
FORMAT() |
千分位+小数 | FORMAT(money,2) → 1,234.56 |
CEIL()/FLOOR() |
向上/向下取整 | CEIL(3.1) → 4 |
LPAD() |
左侧补零/字符 | LPAD(id,3,'0') → 005 |
三、日期时间格式化(高频重点)
最常用、最容易忘,不同数据库写法略有区别,我给你通用 + 主流数据库版本。
1. 通用标准格式
sql
-- 获取 年-月-日
DATE_FORMAT(时间, '%Y-%m-%d')
-- 获取 年-月-日 时:分:秒
DATE_FORMAT(时间, '%Y-%m-%d %H:%i:%s')
2. 主流数据库日期格式化
- MySQL :
DATE_FORMAT(时间, '%Y-%m-%d') - SQL Server :
CONVERT(varchar, 时间, 23) - Oracle :
TO_CHAR(时间, 'YYYY-MM-DD')
常用格式符(MySQL)
| 符号 | 含义 |
|---|---|
%Y |
4位年(2025) |
%m |
2位月(01-12) |
%d |
2位日 |
%H |
24小时制 |
%i |
分钟 |
%s |
秒 |
日期提取
sql
YEAR(create_time) -- 提取年
MONTH(create_time) -- 提取月
DAY(create_time) -- 提取日
HOUR(create_time) -- 提取小时
四、空值格式化(把 NULL 变成默认值)
查询时把空值显示为 0、无、未知,避免报表显示 NULL 很难看
| 函数 | 作用 |
|---|---|
IFNULL(字段, 默认值) |
MySQL 空值替换 |
COALESCE(字段, 默认值) |
通用标准(所有数据库都能用) |
示例:
sql
-- 没有金额就显示 0
COALESCE(money, 0)
-- 没有备注就显示"无"
COALESCE(remark, '无')
五、数据类型转换(强制转格式)
把字符串转数字、日期转字符串、数字转字符串等
| 函数 | 作用 |
|---|---|
CAST(值 AS 类型) |
通用类型转换 |
CONVERT() |
转换(SQL Server/MySQL) |
示例:
sql
CAST(score AS CHAR) -- 数字转字符串
CAST('123' AS INT) -- 字符串转数字
高频实用格式化模板(直接用)
-
金额显示:保留2位小数
sqlROUND(price, 2) -
手机号隐藏中间4位
sqlCONCAT(LEFT(phone,3), '****', RIGHT(phone,4)) -
日期只显示 年-月-日
sqlDATE_FORMAT(create_time, '%Y-%m-%d') -
空值显示为 0
sqlCOALESCE(score, 0) -
数字补零成固定长度
sqlLPAD(id, 4, '0') → 0012
总结
- 字符串 :用
UPPER/LOWER/CONCAT/SUBSTRING/REPLACE清洗文本 - 数字 :用
ROUND/FORMAT/LPAD控制小数、千分位、补零 - 日期 :用
DATE_FORMAT转年-月-日,是最常用格式化 - 空值 :用
COALESCE把 NULL 变成默认值 - 类型转换 :用
CAST强制转换数据格式