首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

資料清洗實用技巧:RTRIM 移除尾部特定字元

     編輯:MySQL 綜合教學

資料清洗實用技巧:RTRIM 移除尾部特定字元

資料清洗常需處理尾部雜訊字元。許多開發者只知 RTRIM 移除空白,實則它支援指定字元集合,可一次清除尾部連續出現的任意字元,大幅簡化邏輯。

一、標準語法

RTRIM(string [, trim_chars])
-- Oracle/PostgreSQL/MySQL 8.0+ 支援雙參數
-- SQL Server 僅支援單參數(移除空白),需用 REPLACE/SUBSTRING 組合

二、實戰範例

場景資料範例語法結果
移除尾部空白'abc 'RTRIM(col)'abc'
移除尾部特定字元 '0''123000'RTRIM(col, '0')'123'
移除尾部多種字元 '0', ' ', '.' '123.00 'RTRIM(col, '0 .')'123'
移除尾部字母 'abc''id123abcabc'RTRIM(col, 'abc')'id123'

關鍵行為:trim_chars 視為字元集合,而非子字串。尾部只要連續屬於集合內字元,皆會被移除,直到遇到不在集合內的字元為止。

三、資料庫差異對照

資料庫支援雙參數替代方案
MySQL 8.0+✅ RTRIM(str, chars)—
MySQL 5.7❌TRIM(TRAILING chars FROM str)(僅單字元)
PostgreSQL✅—
Oracle✅—
SQL Server❌REVERSE(SUBSTRING(REVERSE(col), PATINDEX('%[^0 ]%', REVERSE(col)), LEN(col)))

四、常見陷阱與最佳實踐

  1. 非尾部字元不受影響:RTRIM('a0b0', '0') → 'a0b0'(中間的 0 保留)。
  2. 字元集合順序無關:RTRIM(col, 'abc') 等同 RTRIM(col, 'cba')。
  3. NULL 傳入回傳 NULL:需搭配 COALESCE 或 IFNULL。
  4. 效能提示:大量資料更新時,建議加索引或分批 UPDATE ... WHERE RTRIM(col, '0') != col 避免全表掃描鎖表。

五、延伸:LTRIM / TRIM 同理可用

LTRIM(str, chars)   -- 移除首部指定字元集合
TRIM(BOTH chars FROM str)  -- 同時移除首尾

善用這三個函數的雙參數版本,能將許多原本需要正則或多層嵌套的清洗邏輯,簡化為單一可讀性極高的函數呼叫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved