我們先從一個超級基本但很重要的事實開始:資料本身常常很「生」。一堆亂七八糟的數字、日期或字串,看了真的很難懂。想像一下有個報表,日期有的寫 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_name 跟 last_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 格式,字串要注意大小寫,數字要四捨五入。
分析跟視覺化
想像你要畫圖表或長條圖,沒格式化的話,圖表可能會亂七八糟。
GO TO FULL VERSION