Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk memintas beberapa aksara dalam rentetan dalam oracle

Bagaimana untuk memintas beberapa aksara dalam rentetan dalam oracle

青灯夜游
青灯夜游asal
2022-02-14 12:47:0556561semak imbas

Dalam Oracle, anda boleh menggunakan fungsi Instr() dan substr() untuk memintas sebahagian daripada aksara dalam rentetan Sintaks ialah "SUBSTR('String untuk dipintas', kedudukan permulaan pemintasan, INSTR(. 'Rentetan Dimintas Diperlukan,'','kedudukan permulaan carian','bilangan kejadian')-1) ".

Bagaimana untuk memintas beberapa aksara dalam rentetan dalam oracle

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.

oracle memintas sebahagian daripada rentetan dalam medan

Gunakan fungsi Instr() dan substr() dalam Oracle:

Dalam Oracle, anda boleh menggunakan fungsi instr untuk menilai rentetan untuk menentukan sama ada ia mengandungi aksara tertentu.

Sintaksnya ialah:

instr(sourceString,destString,start,appearPosition).   
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

di mana

  • sourceString mewakili rentetan sumber; destString mewakili subrentetan untuk dicari dalam rentetan sumber; >

    appearPosition mewakili bilangan kejadian destString yang anda ingin cari daripada aksara sumber Parameter ini juga adalah pilihan dan lalai ialah 1; nombor negatif, Kemudian carian dilakukan dari kanan ke kiri, tetapi data kedudukan masih dikira dari kiri ke kanan.
  • Nilai pulangan ialah: kedudukan rentetan yang ditemui.

    Untuk fungsi instr, kami sering menggunakannya seperti ini: cari kedudukan subrentetan yang ditentukan daripada rentetan. Contohnya:
  • Mulakan carian dari aksara ke-7

  • Mulakan dari aksara pertama dan cari kejadian kedua subrentetan

  • Untuk fungsi instr, kami sering menggunakannya seperti ini: cari kedudukan subrentetan yang ditentukan daripada rentetan. Contohnya:

Bermula dari 1, d menduduki tempat keempat, jadi 4 dikembalikan

Bermula dari aksara ke-3, aksara ke-3 ialah c, jadi bermula dari 3. Cari bc dalam rentetan seterusnya dan kembalikan 9

SQL> select instr('yuechaotianyuechao','ao') position from dual;
 POSITION
 ----------
 6
Penggunaan fungsi substr, dapatkan rentetan dengan kedudukan permulaan dan panjang yang ditentukan dalam rentetan Lalai ialah subrentetan dari kedudukan permulaan hingga penghujung.

SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
 POSITION
 ----------
 17
Seperti:

SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
 POSITION
 ----------
 17

Fungsi SUBSTR()

SQL> select instr('abcdefgh','de') position from dual; 
POSITION 
---------- 
4

1 Penggunaan: Daripada ungkapan aksara yang diberikan atau pengembalian kata a subrentetan dalam medan.

SQL>select instr('abcdefghbc','bc',3) position from dual; 
POSITION 
---------- 
9
2. Format tatabahasa:

Format 1:

 substr( string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)
1. rentetan Rentetan yang perlu dipintas

2. a memintas rentetan Kedudukan permulaan (Nota: Apabila a sama dengan 0 atau 1, pemintasan bermula dari kedudukan pertama)
      substr('This is a test', 6, 2)     would return 'is' 
      substr('This is a test', 6)     would return 'is a test' 
      substr('TechOnTheNet', -3, 3)     would return 'Net' 
      substr('TechOnTheNet', -6, 3)     would return 'The'select substr('Thisisatest', -4, 2) value from dual

3. b Panjang rentetan yang akan dipintas Format 2:

1. rentetan Rentetan yang perlu dipintas

2. a boleh difahami sebagai memintas semua rentetan seterusnya bermula daripada aksara a-th.

substr(string string, int a, int b);
substr(string string, int a) ; 

oracle memintas rentetan

C3411.907w15 memintas rentetan C3411 sebelum titik SUBSTR ('C3411.907w15', 0, INSTR ('C3411.9, '07w11. .', 1, 1) - 1)

Potong rentetan 907w15 selepas titik daripada C3411.907w15 SUBSTR ('C3411.907w15', INSTR ('C3411.907w15,', ' 1, 1) 1)

Contoh aplikasi projek:

Rentetan asal:

Ada Adakah 7 "_" dalam medan asal Sekarang saya hanya mahu mengeluarkan rentetan selepas "_" yang terakhir.

SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
  FROM DUAL
Dua langkah:

Langkah pertama ialah mencari aksara "_" ke-7 melalui fungsi Instr():
SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
  FROM DUAL

pilih instr('Q room Net Kumpulan_Bahagian Pembrokeran_Daerah China Selatan_Shenzhen Shihua_Jabatan Jualan_Nanshan Qianhai District_Kawasan Pusat Qianhai_Qianhai Cawangan Kelima','_', 1, 7) fnama paparan dari SHENZHENJM1222.B

Orang

pilih instr('Qfang.com Group_Brokerage Division_South China District_Shenzhen Shihua_Jualan Department_Nanshan Qianhai District_Qianhai Central Area_Qianhai Wufen Branch', '_',

-1, 1

) fdisplayname FROM SHENZHE.>Kedua-duanya mempunyai kesan yang sama Yang berikut -1 bermakna dari Kira aksara permulaan dari kanan, 1 bermakna untuk mendapatkan "_" pertama

Hasil yang diperolehi adalah seperti yang ditunjukkan dalam rajah:

Langkah 2, gunakan fungsi substr() untuk mendapatkan medan yang diperlukan: pilih substr(fdisplayname

,instr(fdisplayname,'_', -1,1)

1

) fdisplayname from SHENZHENJM1222.B

fdisplayname : mewakili nama medan, bersamaan dengan metastring

Fokus pada pengenalan 1

1 bermakna mula memintas rentetan pertama selepas rentetan sasaran "_"

Mari kita lihat situasi nombor yang berbeza:

pilih substr(fdisplayname , instr(fdisplayname,'_',-1,1) 1) fdisplayname from SHENZHENJM1222.B

Mari kita lihat maksud 1 dalam instr(fdisplayname,'_',-1,1):

Tutorial yang disyorkan: "Tutorial Oracle"

Atas ialah kandungan terperinci Bagaimana untuk memintas beberapa aksara dalam rentetan dalam oracle. 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