專案遷移至 DB2 時,常需快速掌握其內建函數用法。本文整理 DB2 核心字串函數,包含空值處理、長度計算、大小寫轉換、修剪空白、左右擷取與串接,附語法與範例供參考。
語法: VALUE(EXPRESSION1, EXPRESSION2)
說明: 若第一個參數非 NULL 則返回該值,否則返回第二個參數。功能類似 COALESCE 或 IFNULL,但為 DB2 早期專有函數,新專案建議改用標準的 COALESCE。
範例:
-- 若 ID 為 NULL 則回傳空字串,否則回傳 ID
SELECT VALUE(ID, '') FROM T1;
語法: COALESCE(ARG1, ARG2, ...)
說明: 返回參數列表中第一個非 NULL 的值。支援多參數,符合 ANSI SQL 標準,跨資料庫可攜性較佳。
語法: LENGTH(ARG)
說明: 返回字串的位元組長度。對於多位元組字元集(如 UTF-8),一個中文字可能佔 3 位元組,需注意與字元數的差異。
範例:
SELECT LENGTH(NAME) FROM T1;
語法: LCASE(STR) 或 LOWER(STR)
說明: 將字串轉為小寫。兩者功能相同,LOWER 為標準寫法。
範例:
SELECT LCASE(NAME), LOWER(NAME) FROM T1;
語法: UCASE(STR) 或 UPPER(STR)
說明: 將字串轉為大寫。建議統一使用 UPPER。
範例:
SELECT UCASE(NAME), UPPER(NAME) FROM T1;
語法: LTRIM(STR)、RTRIM(STR)
說明: 分別移除字串左側/右側的空白字元。DB2 無內建 TRIM(兩側同修),需組合使用 LTRIM(RTRIM(STR))。
範例:
SELECT LTRIM(NAME), RTRIM(NAME) FROM T1;
語法: LEFT(ARG, LENGTH)、RIGHT(ARG, LENGTH)
說明: 分別返回字串最左側或最右側指定長度的子字串。引數可為 CHAR 或二進位字串。
範例:
SELECT LEFT(NAME, 2), RIGHT(NAME, 2) FROM T1;
語法: CONCAT(ARG1, ARG2)
說明: 串接兩個字串。等同於 ARG1 || ARG2,後者支援多字串鏈接,更彈性。
這些函數是 DB2 日常開發的基石。特別注意 VALUE 為舊版語法,新代碼請優先使用 COALESCE;修剪空白需組合 LTRIM/RTRIM;串接慣用 || 運算子以利閱讀與擴充。