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

Bagaimana untuk mengekstrak subrentetan sebelum garis bawah dalam Oracle SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 13:27:08747semak imbas

How to Extract a Substring Before an Underscore in Oracle SQL?

Cara Mengekstrak Subrentetan Sehingga Aksara Tertentu dalam Oracle SQL

Mengenal pasti kedudukan aksara dalam rentetan boleh menjadi cabaran biasa dalam manipulasi data. Untuk menangani perkara ini, soalan itu meneroka senario di mana subrentetan sehingga aksara tertentu, dalam kes ini garis bawah ('_'), perlu diekstrak daripada lajur jadual.

Batasan Berasaskan Kedudukan SUBSTRING

Pendekatan awal menggunakan fungsi SUBSTRING terbukti tidak mencukupi kerana pergantungannya pada pemilihan berasaskan kedudukan. Memandangkan kedudukan garis bawah berbeza-beza dalam contoh yang diberikan, kaedah ini gagal untuk mendapatkan semula subrentetan yang diingini secara konsisten.

Fungsi RTIM: Penyelesaian yang Menjanjikan tetapi Tidak Lengkap

Pertimbangan fungsi RTRIM, bertujuan untuk alih keluar set aksara tertentu dari sebelah kanan, pada mulanya nampak menjanjikan. Walau bagaimanapun, ia gagal dalam mengasingkan aksara yang membawa kepada garis bawah melainkan fungsi RTRIM digunakan bersama dengan kaedah lain.

Gabungan SUBSTR, INSTR dan NVL

Penyelesaian terletak dalam menggabungkan fungsi SUBSTR dengan INSTR, yang mengenal pasti kedudukan watak, dan NVL, yang mengendalikan nilai nol. Kod berikut menunjukkan pendekatan ini:

SELECT NVL(SUBSTR('ABC_blah', 0, INSTR('ABC_blah', '_')-1), 'ABC_blah') AS output
FROM DUAL

Memahami Pelaksanaan

  • Fungsi SUBSTR mengekstrak subrentetan berdasarkan kedudukan permulaan (0) dan panjang yang ditentukan (INSTR('ABC_blah ', '_')-1).
  • Fungsi INSTR mencari kejadian pertama aksara garis bawah dan tolak 1 untuk mengambil kira pengindeksan aksara.
  • Fungsi NVL mengembalikan subrentetan jika ditemui (bukan nol); jika tidak, ia mengembalikan rentetan asal.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak subrentetan 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