首頁 >資料庫 >mysql教程 >如何在 Oracle SQL 中提取下劃線之前的子字串?

如何在 Oracle SQL 中提取下劃線之前的子字串?

Patricia Arquette
Patricia Arquette原創
2024-12-29 00:26:09413瀏覽

How to Extract Substrings Before an Underscore in Oracle SQL?

在 Oracle SQL中提取特定字元的子字串

問題:
從包含先前具有不同字元序列的結果的列中選擇子字串下劃線(「_」)字符,同時排除底線

解:

為了達到預期的結果,SQL函數的組合提供了解決方案:

SELECT NVL(SUBSTR(column, 0, INSTR(column, '_')-1), column) AS output
FROM YOUR_TABLE;

說明:

  • SUBSTR 函數提取從以下位置開始的子字串指定的位置(0 ) 並繼續指定的長度。
  • INSTR 函數決定字串中底線字元第一次出現的位置。
  • NVL 函數計算出第一個非null 值,確保不帶下劃線字元的子字串傳回原始值。
  • INSTR(column, '_') 減 1 確保僅下劃線之前的字元包含在輸出。

範例:

給定:

ORG | VALUE
1   | ABC_blahblahblah
2   | DEFGH_moreblahblahblah
3   | IJKLMNOP_moremoremoremore

查詢:

SELECT NVL(SUBSTR(VALUE, 0, INSTR(VALUE, '_')-1), VALUE) AS output
FROM ORG;

結果:

OUTPUT
ABC
DEFGH
IJKLMNOP

註:

對於Oracle10g版本中,REGEXP_SUBSTR函數可以用來取代SUBSTR:

SELECT REGEXP_SUBSTR(column, '^.*(?=_)') AS output
FROM YOUR_TABLE;

以上是如何在 Oracle SQL 中提取下劃線之前的子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn