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 mengonversichar
ke dalam set karakter database. Tipe data keluaran adalahVARCHAR2
. - Menentukan
USING
NCHAR_CS
argumen mengonversichar
ke dalam rangkaian karakter bangsa. Tipe data keluarannya adalahNVARCHAR2
.
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: