字串處理與日期時間運算是 SQL 查詢中最高頻的操作場景。本文整理 SQL Server 中最常用的字串函數與時間函數,分類說明語法與實戰範例,方便開發人員快速查閱與應用。
UPPER('字串'):轉為大寫LOWER('字串'):轉為小寫SELECT UPPER('AsaR'); -- 回傳 'ASAR'
LEN('字串'):傳回字元數(不含尾端空白)DATALENGTH('字串'):傳回位元組數LTRIM('字串'):移除左側空白RTRIM('字串'):移除右側空白LEFT('字串', 長度):從左側起擷取指定字元數RIGHT('字串', 長度):從右側起擷取指定字元數SUBSTRING('字串', 起始位置, 長度):從指定位置擷取指定長度REPLACE('原字串', '舊字串', '新字串')
-- 範例:將 '你們' 替換為 '我們'
SELECT REPLACE('你們', '你', '我'); -- 回傳 '我們'
GETDATE()
-- 100 天後
DATEADD(DAY, 100, GETDATE())
-- 也可用於月、年、時、分、秒等單位
-- 計算兩個日期相差的年數
DATEDIFF(YEAR, '1990/10/11', GETDATE())
YEAR(日期)、MONTH(日期)、DAY(日期)實戰範例:統計各年份出生人數
SELECT YEAR(birthday) AS 出生年份, COUNT(*) AS 人數
FROM 表名
GROUP BY YEAR(birthday);
DATEPART 函數可擷取更細緻的時間單位:
DATEPART(YEAR, 日期)
DATEPART(MONTH, 日期)
DATEPART(DAY, 日期)
DATEPART(HOUR, 日期)
DATEPART(MINUTE, 日期)
DATEPART(SECOND, 日期)
WHERE 條件進行資料清洗,如移除匯入資料中的多餘空白。CAST 或 CONVERT 指定格式。DATEPART 與 YEAR/MONTH/DAY 功能重疊,前者更彈性,後者語法更簡潔,視可讀性選擇。熟練掌握這些內建函數,能大幅簡化 T-SQL 程式碼,提升查詢效能與可維護性。