Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara mendapatkan string ke-n dalam kata atau kalimat umum apa pun dengan pembatas spasi

Dengan menggunakan instr .

select substr(help, 1, instr(help,' ') - 1)
  from ( select 'hello my name is...' as help
           from dual )

instr(help,' ') mengembalikan indeks posisi kemunculan pertama dari argumen kedua di argumen pertama, termasuk string yang Anda cari. yaitu kemunculan pertama ' ' dalam string 'hello my name is...' tambah ruang.

substr(help, 1, instr(help,' ') - 1) kemudian mengambil string input dari karakter pertama ke indeks yang ditunjukkan dalam instr(... . Saya kemudian menghapus satu sehingga ruang tidak disertakan..

Untuk kejadian ke-n, ubah sedikit ini:

instr(help,' ',1,n) adalah n kemunculan ' ' dari karakter pertama. Anda kemudian perlu menemukan indeks posisi dari indeks berikutnya instr(help,' ',1,n + 1) , terakhir cari tahu perbedaan di antara mereka sehingga Anda tahu seberapa jauh untuk pergi di substr(... Anda . Saat Anda mencari n , ketika n adalah 1 ini rusak dan Anda harus menghadapinya, seperti:

select substr( help
             , decode( n
                     , 1, 1
                     , instr(help, ' ', 1, n - 1) + 1
                       )
             , decode( &1
                     , 1, instr(help, ' ', 1, n ) - 1
                     , instr(help, ' ', 1, n) - instr(help, ' ', 1, n - 1) - 1
                       )
               )
  from ( select 'hello my name is...' as help
           from dual )

Ini juga akan rusak di n . Seperti yang Anda lihat, ini semakin konyol sehingga Anda mungkin ingin mempertimbangkan untuk menggunakan regular expressions

select regexp_substr(help, '[^[:space:]]+', 1, n )
  from ( select 'hello my name is...' as help
           from dual )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tidak divalidasi dengan kesalahan ora-02299

  2. Menggunakan cakupan transaksi dan kueri

  3. perlu mengelompokkan catatan berdasarkan pembalikan yang cocok

  4. Bernama Query, Native Query atau Criteria API

  5. Buka bungkus ke OracleConnection