CodeGym /课程 /SQL SELF /数据格式化

数据格式化

SQL SELF
第 5 级 , 课程 0
可用

咱们先说个很现实但又很重要的道理:数据本身经常都是“毛坯货”。一堆没整理的数字、日期或者字符串,看着就头大。想象一下有个报表,日期格式乱七八糟:有的写成01/02/2023,有的写成2023-02-01。就算是最细心的分析师也会被搞晕。这时候,数据格式化的魔法就派上用场了。

数据格式化能帮你:

  • 把数据变成更好理解的样子,用起来更顺手。
  • 变身数据分析小能手,快速提取你想要的信息。
  • 导出或者和别的系统集成提前准备好数据。
  • 让报表和可视化更清晰、更准确

比如你在大学工作,要做个报表,列出所有学生的全名、出生日期和院系。你不用手动拼接数据,而是写个带格式化的查询,把名字和姓氏合成一列,出生日期也用大家都能看懂的格式,比如2001年3月12日

数据格式化的主要任务

格式化其实就像切水果拼盘。你不能直接把一堆水果扔碗里,还得切好、摆好看。在SQL里,这活分成几类:

字符串格式化

比如拼接字符串、大小写转换(全大写或全小写)、加减空格和符号啥的。

数字格式化

有时候你得把数字转成字符串,或者四舍五入到你想要的小数位数。

日期和时间处理

可以自动搞定获取当前日期、格式化时间数据,或者只提取日期的某一部分(比如只要年份或月份)。

提取唯一值

如果你报表只想显示唯一的记录(比如唯一的城市或院系),这也算数据格式化的一部分。

PostgreSQL里的格式化工具

PostgreSQL自带一堆内置函数帮你搞定数据。下面这些只是冰山一角,后面几节课我们会详细聊:

字符串格式化

  • CONCAT():拼接字符串。
  • UPPER()LOWER():改大小写。

日期和时间格式化

  • NOW():当前日期和时间。
  • CURRENT_DATE:当前日期(不带时间)。
  • DATE_PART():提取日期的部分,比如年份或月份。

类型转换

  • CAST():改数据类型。
  • 语法:<值>::<类型>

数据排序

  • ORDER BY:按一列或多列排序。
  • DISTINCT:提取唯一值。

数据格式化示例:实际长啥样?

为了让你有点兴趣,咱们来几个例子。先从简单的开始。

例子1:字符串格式化

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;

这个查询把first_namelast_name拼成一列full_name。比如学生叫"Otto",姓"Art",结果就是:"Otto Art"。

例子2:日期格式化

SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students;

这里我们只提取date_of_birth这一列的出生年份。如果数据库里的生日是2001-03-15,结果就是2001

例子3:类型转换

SELECT birth_year::text || ' 年' AS formatted_year
FROM (
  SELECT DATE_PART('year', date_of_birth) AS birth_year
  FROM students
) subquery;

这个查询先提取出生年份,然后把它转成字符串,再加上" 年"。比如结果就是:2001 年

这些都用在哪?

给经理的报表

不是所有人都想看“毛坯”数据。比如公司营收报表,金额最好用千分位分隔(1,000,000而不是1000000),日期用2025年2月21日这种格式。

给客户的报表

比如发邮件给客户:"尊敬的[姓名],您的订单N123已于2023年10月12日成功送达"。

和其他系统集成

有些表单要求特定的数据格式:日期要ISO格式,字符串要注意大小写,数字要四舍五入。

分析和可视化

你要画图表或者做可视化,没有格式化的话,图表看起来会很乱。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION