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

TRANSLATE(… MENGGUNAKAN) Fungsi di Oracle

Di Oracle, TRANSLATE(...USING) fungsi mengubah argumennya menjadi kumpulan karakter yang ditentukan untuk konversi antara kumpulan karakter database dan kumpulan karakter nasional.

Fungsi ini jangan disamakan dengan the TRANSLATE() fungsi, yang memungkinkan Anda membuat beberapa substitusi satu-ke-satu karakter tunggal dalam satu operasi.

TRANSLATE(...USING) fungsi didukung di Oracle terutama untuk kompatibilitas ANSI. Oracle merekomendasikan agar kami menggunakan TO_CHAR() dan TO_NCHAR() berfungsi sebagai gantinya.

Sintaks

Sintaksnya seperti ini:

TRANSLATE ( char USING
          { CHAR_CS | NCHAR_CS }
          )

Dimana char adalah ekspresi yang akan dikonversi, dan:

  • Menentukan USING CHAR_CS argumen mengonversi char ke dalam set karakter database. Tipe data keluaran adalah VARCHAR2 .
  • Menentukan USING NCHAR_CS argumen mengonversi char ke dalam rangkaian karakter bangsa. Tipe data keluarannya adalah NVARCHAR2 .

Contoh

Berikut ini contoh dasarnya:

SELECT 
    TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
    TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;

Hasil:

   CHAR_CS    NCHAR_CS 
__________ ___________ 
Cat        Cat        

Untuk menunjukkan perbedaannya, inilah yang terjadi ketika kita meneruskannya ke DUMP() fungsi:

SELECT 
    DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
    DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;

Hasil:

              CHAR_CS                       NCHAR_CS 
_____________________ ______________________________ 
Typ=1 Len=3: C,a,t    Typ=1 Len=6: ^@,C,^@,a,^@,t   

Argumen Null

Melewati null karena argumen mengembalikan null :

SET NULL 'null';
SELECT 
    TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;

Hasil:

null

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

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

Argumen Tidak Ada

Memanggil fungsi dengan tanpa melewati char argumen menghasilkan kesalahan:

SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menginstal Oracle di Mac

  2. Apakah 'Pilih' selalu diurutkan berdasarkan kunci utama?

  3. Contoh APEX_ZIP

  4. Fungsi ABS() di Oracle

  5. Mencoba mengekspor Oracle melalui PL/SQL memberikan tanggal 0000-00-00