PolarDB untuk PostgreSQL (Kompatibel dengan Oracle) mendukung fungsi TO_SINGLE_BYTE dan TO_MULTI_BYTE yang kompatibel dengan Oracle melalui ekstensi polar_to_single_byte. Fungsi TO_SINGLE_BYTE mengonversi karakter multibyte (seperti angka dan huruf full-width) ke padanan single-byte-nya, sedangkan fungsi TO_MULTI_BYTE melakukan sebaliknya. Fungsi-fungsi ini bukan bagian dari PostgreSQL standar; keduanya disediakan sebagai ekstensi untuk menjaga kompatibilitas dengan Oracle.
Prasyarat
Ketersediaan ekstensi ini bergantung pada tanggal pembuatan kluster Anda:
Kluster yang dibuat pada atau setelah 30 Maret 2020: Ekstensi dibuat secara otomatis saat Anda membuat database. Tidak diperlukan langkah tambahan.
Kluster yang dibuat sebelum 30 Maret 2020: Ekstensi tidak dibuat secara otomatis. Setelah membuat database, jalankan pernyataan berikut untuk menginstalnya:
CREATE EXTENSION polar_to_single_byte;
Untuk spesifikasi fungsi Oracle asli, lihat referensi TO_SINGLE_BYTE dan TO_MULTI_BYTE dalam dokumentasi Oracle.
Tipe data yang didukung
Kedua fungsi menerima tipe input berikut dan mengembalikan tipe yang sama dengan inputnya.
| Fungsi | Tipe input | Tipe output |
|---|---|---|
| TO_SINGLE_BYTE | CHAR | CHAR |
| TO_SINGLE_BYTE | CHARACTER VARYING | CHARACTER VARYING |
| TO_SINGLE_BYTE | TEXT | TEXT |
| TO_MULTI_BYTE | CHAR | CHAR |
| TO_MULTI_BYTE | CHARACTER VARYING | CHARACTER VARYING |
| TO_MULTI_BYTE | TEXT | TEXT |
Contoh
TO_SINGLE_BYTE
Konversi string full-width ke ASCII:
SELECT to_single_byte('123$test');
to_single_byte
----------------
123$test
(1 row)TO_MULTI_BYTE
Konversi string ASCII ke full-width:
SELECT to_multi_byte('123$test');
to_multi_byte
------------------
123$test
(1 row)