TRIM() / LTRIM() / RTRIM() 函數 (SQL Trim Functions)
SQL 提供了多個函數來移除字串前後的空白字元或指定字元:
| 函數 | 說明 |
|---|---|
TRIM() | 移除字串前後的空白或指定字元 |
LTRIM() | 移除字串左側 (開頭) 的空白或指定字元 |
RTRIM() | 移除字串右側 (結尾) 的空白或指定字元 |
TRIM() 函數
MySQL 語法
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
BOTH:移除前後 (預設)LEADING:只移除開頭TRAILING:只移除結尾remstr:要移除的字元 (預設為空白)
範例:
-- 移除前後空白
SELECT TRIM(' Hello World ');
-- 結果:'Hello World'
-- 移除開頭的 x
SELECT TRIM(LEADING 'x' FROM 'xxxHelloxx');
-- 結果:'Helloxx'
-- 移除結尾的 x
SELECT TRIM(TRAILING 'x' FROM 'xxxHelloxx');
-- 結果:'xxxHello'
-- 移除前後的 x
SELECT TRIM(BOTH 'x' FROM 'xxxHelloxx');
-- 結果:'Hello'
SQL Server 語法
TRIM([characters FROM] string)
範例:
-- 移除前後空白
SELECT TRIM(' Hello World ');
-- 結果:'Hello World'
-- 移除前後的指定字元
SELECT TRIM('.,! ' FROM '...Hello! ');
-- 結果:'Hello'
Oracle / PostgreSQL 語法
TRIM([{LEADING | TRAILING | BOTH} [trim_char] FROM] string)
⚠️ Oracle 限制:
trim_char只能是單一字元。
範例:
-- 移除前後空白
SELECT TRIM(' Hello ') FROM DUAL;
-- 結果:'Hello'
-- 移除開頭的 0
SELECT TRIM(LEADING '0' FROM '000123') FROM DUAL;
-- 結果:'123'
LTRIM() 函數 (移除左側)
MySQL / SQL Server
SELECT LTRIM(' Hello');
-- 結果:'Hello'
Oracle
Oracle 的 LTRIM() 可以指定要移除的字元集合:
-- 移除開頭空白
SELECT LTRIM(' Hello') FROM DUAL;
-- 結果:'Hello'
-- 移除開頭的多個字元
SELECT LTRIM('000123', '0') FROM DUAL;
-- 結果:'123'
SELECT LTRIM('123abc', '0123456789') FROM DUAL;
-- 結果:'abc' (移除所有開頭的數字)
RTRIM() 函數 (移除右側)
MySQL / SQL Server
SELECT RTRIM('Hello ');
-- 結果:'Hello'
Oracle
-- 移除結尾空白
SELECT RTRIM('Hello ') FROM DUAL;
-- 結果:'Hello'
-- 移除結尾的指定字元
SELECT RTRIM('123000', '0') FROM DUAL;
-- 結果:'123'
SELECT RTRIM('abc789', '0123456789') FROM DUAL;
-- 結果:'abc'
實際應用範例
1. 資料清理
-- 清理輸入資料的前後空白
UPDATE customers
SET Name = TRIM(Name),
Email = TRIM(Email)
WHERE Name LIKE ' %' OR Name LIKE '% '
OR Email LIKE ' %' OR Email LIKE '% ';
2. 比較前後有空白的資料
-- 找出有多餘空白的記錄
SELECT * FROM customers
WHERE Name != TRIM(Name);
3. 移除數字前導零
-- Oracle / SQL Server 使用 LTRIM
SELECT LTRIM('00042', '0') AS CleanNumber; -- Oracle
-- 結果:'42'
4. 格式化輸出
-- 產生整齊的輸出格式
SELECT CONCAT(RTRIM(FirstName), ' ', LTRIM(LastName)) AS FullName
FROM employees;
5. URL 清理
-- 移除 URL 結尾的斜線
SELECT RTRIM(URL, '/') AS CleanUrl
FROM websites;
各資料庫函數對照
| 資料庫 | TRIM | LTRIM | RTRIM | 可指定字元 |
|---|---|---|---|---|
| MySQL | ✅ | ✅ | ✅ | ✅ (TRIM 支援) |
| SQL Server | ✅ | ✅ | ✅ | ✅ (TRIM 支援,2017+) |
| PostgreSQL | ✅ | ✅ | ✅ | ✅ |
| Oracle | ✅ | ✅ | ✅ | ✅ (單字元) |
相關主題
- LENGTH() - 取得字串長度
- REPLACE() - 取代字串
- SUBSTRING() - 擷取子字串