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

Oracle TRIM 函數完整語法詳解:LEADING、TRAILING、BOTH 與自訂字元

     編輯:Oracle 資料庫基礎

標準語法結構

TRIM(
  [ [ { LEADING | TRAILING | BOTH } [ trim_character ] ]
    | trim_character
  ] FROM
  trim_source
)

參數說明

  • LEADING:僅移除前導字元。
  • TRAILING:僅移除尾隨字元。
  • BOTH(預設):同時移除前導與尾隨字元。
  • trim_character:要移除的單一字元,省略時預設為空白鍵。
  • trim_source:目標字串。

逐層實測

1. 最簡用法(預設 BOTH 空白)

SELECT TRIM('  DWEYE  ') FROM dual;  --> 'DWEYE'

2. 顯式指定 BOTH

SELECT TRIM(BOTH FROM '  DWEYE  ') FROM dual;  --> 'DWEYE'

3. LEADING / TRAILING 針對性修剪

SELECT TRIM(TRAILING FROM '  DWEYE  ') FROM dual;  --> '  DWEYE'
SELECT TRIM(LEADING FROM '  DWEYE  ') FROM dual;   --> 'DWEYE  '

4. 自訂移除字元 trim_character

SELECT TRIM('x' FROM 'xxxxDWEYExxxx') FROM dual;  --> 'DWEYE'
-- 等同於
SELECT TRIM(BOTH 'x' FROM 'xxxxDWEYExxxx') FROM dual;

5. 組合:LEADING/TRAILING + 自訂字元

SELECT TRIM(TRAILING 'x' FROM 'xxxxDWEYExxxx') FROM dual;  --> 'xxxxDWEYE'
SELECT TRIM(LEADING 'x' FROM 'xxxxDWEYExxxx') FROM dual;    --> 'DWEYExxxx'

重要限制:trim_character 僅支援單一字元

-- 錯誤:ORA-30001: trim set should have only one character
SELECT TRIM(LEADING 'xy' FROM 'xyxxDWEYExyyx') FROM dual;

替代方案:LTRIM / RTRIM 支援多字元集合

-- RTRIM 移除右側所有出現在 'xy' 中的字元
SELECT RTRIM('xyxxDWEYExyyx', 'xy') FROM dual;  --> 'xyxxDWEYE'

-- LTRIM 移除左側
SELECT LTRIM('xyxxDWEYExyyx', 'xy') FROM dual;  --> 'DWEYExyyx'

-- 疊加達成雙向多字元修剪
SELECT LTRIM(RTRIM('xyxxDWEYExyyx', 'xy'), 'xy') FROM dual;  --> 'DWEYE'

注意: LTRIM/RTRIM 的第二參數是「字元集合」,而非子字串。只要字元出現在集合中即會被移除,順序無關。

效能與最佳實踐

  • TRIM 為標準 SQL,跨資料庫可攜性最好。
  • 只需修剪空白時,TRIM(col) 最簡潔。
  • 需修剪特定單一字元(如逗號、分號、管線符),TRIM(',' FROM col) 可讀性佳。
  • 需修剪多字元集合,改用 LTRIM/RTRIM 疊加。
  • WHERE 條件中對大欄位使用 TRIM 會導致索引失效,若頻繁查詢建立函數索引 CREATE INDEX idx_trim_col ON tbl(TRIM(col))。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved