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

DECOMPOSE() Fungsi di Oracle

Di Oracle Database, DECOMPOSE() fungsi mengembalikan hasil penerapan salah satu dekomposisi Unicode ke argumen stringnya. Dekomposisi ditentukan oleh argumen (opsional) kedua.

Ini kebalikan dari COMPOSE() fungsi.

Sintaks

Sintaksnya seperti ini:

DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )

Di mana kedua argumen dapat berupa salah satu dari CHAR , VARCHAR2 , NCHAR , atau NVARCHAR2 tipe data, atau tipe yang dapat dikonversi secara implisit menjadi VARCHAR2 atau NVARCHAR2 .

Mengenai argumen kedua (opsional):

  • CANONICAL menghasilkan dekomposisi kanonik, seperti yang dijelaskan dalam definisi Standar Unicode D68, dan mengembalikan string dalam bentuk normalisasi NFD.
  • COMPATIBILITY menghasilkan dekomposisi kompatibilitas, seperti yang dijelaskan dalam definisi Standar Unicode D65, dan mengembalikan string dalam bentuk normalisasi NFKD.

Perilaku default adalah menerapkan dekomposisi kanonik.

Contoh

Ini contohnya:

SELECT DECOMPOSE('ã') FROM DUAL;

Hasil:

Namun, contoh berikut adalah demonstrasi yang lebih baik:

SELECT ASCIISTR(DECOMPOSE('ã')) FROM DUAL;

Hasil:

a\0303

Di sini, kami menggunakan ASCIISTR() untuk mengembalikan versi ASCII dari hasil DECOMPOSE() dalam kumpulan karakter basis data.

Inilah yang terjadi jika kita menggunakan ASCIISTR() tanpa DECOMPOSE() :

SELECT ASCIISTR('ã') FROM DUAL;

Hasil:

\00E3

Karakter Non Unicode

Jika kumpulan karakter argumen bukan salah satu kumpulan karakter Unicode, argumen dikembalikan tanpa dimodifikasi.

Contoh:

SELECT ASCIISTR(DECOMPOSE('a')) FROM DUAL;

Hasil:

a

Argumen Null

Jika argumennya null , hasilnya null :

SET NULL 'null';
SELECT DECOMPOSE(null)
FROM DUAL;

Hasil:

null

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai nol muncul sebagai akibat dari SELECT SQL pernyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Jumlah Argumen Tidak Valid

Memanggil DECOMPOSE() tanpa argumen apa pun menghasilkan kesalahan:

SELECT DECOMPOSE()
FROM DUAL;

Hasil:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:

SELECT DECOMPOSE('a', 'b')
FROM DUAL;

Hasil:

Error report -
ORA-12702: invalid NLS parameter string used in SQL function

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengembalikan nilai kolom identitas setelah penyisipan di Oracle

  2. Oracle Menggabungkan beberapa kolom menjadi satu

  3. Bagaimana cara memanggil prosedur tersimpan Oracle yang menyertakan tipe yang ditentukan pengguna di java?

  4. Tambahkan Kolom yang Mewakili Penggabungan Dua Kolom Varchar Lainnya

  5. Apakah mungkin untuk mengeluarkan pernyataan SELECT dari blok PL/SQL?