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;

各資料庫函數對照

資料庫TRIMLTRIMRTRIM可指定字元
MySQL✅ (TRIM 支援)
SQL Server✅ (TRIM 支援,2017+)
PostgreSQL
Oracle✅ (單字元)

相關主題