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