Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengekstrak substrings sebelum garis bawah dalam Oracle SQL?

Bagaimana untuk mengekstrak substrings sebelum garis bawah dalam Oracle SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 00:26:09413semak imbas

How to Extract Substrings Before an Underscore in Oracle SQL?

Mengekstrak Subrentetan kepada Aksara Khusus dalam Oracle SQL

Masalah:
Memilih subrentetan daripada lajur yang mengandungi hasil dengan urutan aksara yang berbeza-beza sebelum aksara garis bawah ("_"), sambil tidak termasuk garis bawah sendiri.

Penyelesaian:

Untuk mencapai hasil yang diinginkan, gabungan fungsi SQL menyediakan penyelesaian:

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

Penjelasan :

  • Fungsi SUBSTR mengekstrak subrentetan bermula dari kedudukan yang ditentukan (0) dan meneruskan untuk panjang yang ditentukan.
  • Fungsi INSTR menentukan kedudukan kejadian pertama aksara garis bawah dalam rentetan.
  • Fungsi NVL menilai kepada nilai bukan nol pertama, memastikan subrentetan tanpa aksara garis bawah mengembalikan nilai asal.
  • Penolakan 1 daripada INSTR(lajur, '_') memastikan bahawa hanya aksara sebelum garis bawah disertakan dalam output.

Contoh:

Diberikan:

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

Pertanyaan:

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

Keputusan:

OUTPUT
ABC
DEFGH
IJKLMNOP

Nota:

Untuk Versi Oracle10g, fungsi REGEXP_SUBSTR boleh digunakan sebagai alternatif kepada SUBSTR:

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

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak substrings sebelum garis bawah dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn