Mulai Hologres V1.3, ekstensi Orafce diperkenalkan untuk mendukung sejumlah fungsi Oracle. Topik ini menjelaskan sintaksis dan detail dari fungsi Oracle yang didukung di Hologres.
Instal ekstensi Orafce
Sebelum menggunakan fungsi Oracle yang didukung dalam database Hologres, Anda harus mengeksekusi pernyataan berikut sebagai superuser untuk menginstal ekstensi Orafce di database tersebut. Ekstensi ini diinstal pada tingkat database dan hanya perlu dilakukan sekali per database. Jika Anda membuat database baru, ulangi proses instalasi:
-- Instal ekstensi Orafce.
create extension if not exists orafce;
-- Uninstal ekstensi Orafce.
DROP EXTENSION orafce; Setelah ekstensi Orafce diinstal, beberapa skema secara otomatis dibuat, termasuk dbms_alert, dbms_assert, dbms_output, dbms_pipe, dbms_random, dbms_utility, oracle, plunit, plvchr, plvdate, plvlex, plvstr, plvsubst, dan utl_file. Sebelum menginstal ekstensi Orafce, pastikan tidak ada skema dengan nama yang sama di database. Jika ada, instalasi ekstensi Orafce akan gagal.
Fungsi Oracle
Tabel berikut merangkum fungsi Oracle yang didukung di Hologres.
Fungsi Tanggal
Fungsi
Deskripsi
Contoh
Nilai kembali
add_months(day date, value int)
Fungsi ini menambahkan jumlah bulan yang ditentukan oleh parameter kedua ke tanggal yang ditentukan oleh parameter pertama dan mengembalikan tanggal.
SELECT add_months(current_date, 2);2022-05-21
oracle_last_day(value date)
Fungsi ini menemukan hari terakhir dari bulan tempat tanggal tertentu berada dan mengembalikan tanggal.
SELECT oracle_last_day('2022-05-01');2022-05-31
next_day(value date, weekday text)
Fungsi ini mengembalikan tanggal suatu hari. Hari tersebut adalah hari pertama dari hari minggu tertentu yang ditemui mulai dari tanggal yang ditentukan. Parameter pertama menentukan tanggal awal. Parameter kedua menentukan hari dalam seminggu. Contoh: Jumat.
SELECT next_day('2022-05-01', 'FRIDAY');2022-05-06
next_day(value date, weekday integer)
Fungsi ini mengembalikan tanggal suatu hari. Hari tersebut adalah hari pertama dari hari minggu tertentu yang ditemui mulai dari tanggal yang ditentukan. Parameter pertama menentukan tanggal awal. Parameter kedua menentukan angka yang mewakili hari dalam seminggu. Angka berkisar dari 1 hingga 7. Nilai 1 mewakili Minggu, dan nilai 2 mewakili Senin. Dengan cara yang sama, nilai 7 mewakili Sabtu.
SELECT next_day('2022-05-01', 1);SELECT next_day('2022-05-01', 2);
2022-05-08
2022-05-02
months_between(date1 date, date2 date)
Fungsi ini mengembalikan jumlah bulan antara date1 dan date2. Jika date1 lebih baru daripada date2, nilai kembaliannya positif. Jika date1 lebih lama daripada date2, nilai kembaliannya negatif.
SELECT months_between('2022-01-01', '2021-11-01');SELECT months_between('2021-11-01', '2022-01-01');
2
-2
trunc(value timestamp with time zone, fmt text)
Fungsi ini memotong cap waktu untuk mengembalikan tanggal. Parameter pertama menentukan cap waktu yang ingin Anda potong. Parameter kedua menentukan unit pengukuran yang ingin Anda gunakan untuk memotong cap waktu. Nilai Y untuk parameter kedua menentukan bahwa cap waktu dipotong ke hari pertama tahun yang sesuai dengan cap waktu. Nilai Q untuk parameter kedua menentukan bahwa cap waktu dipotong ke hari pertama kuartal yang sesuai dengan cap waktu.
SELECT TRUNC(current_date,'Y');SELECT TRUNC(current_date,'Q');
2022-01-01
2022-01-01
trunc(value timestamp with time zone)
Fungsi ini mengembalikan cap waktu berdasarkan tanggal tertentu. Secara default, cap waktu dengan nilai jam, menit, dan detik dikembalikan.
SELECT TRUNC('2022-03-01'::timestamp);2022-03-01 00:00:00
round(value timestamp with time zone, fmt text)
Fungsi ini membulatkan cap waktu ke nilai terdekat berdasarkan unit seperti minggu atau hari.
SELECT round('2022-02-22 13:11:22'::timestamp, 'YEAR');2022-01-01 00:00:00
round(value timestamp with time zone)
Fungsi ini membulatkan cap waktu ke nilai terdekat berdasarkan unit hari.
SELECT round('2022-02-22 13:11:22'::timestamp);2022-02-23 00:00:00
round(value date, fmt text)
Fungsi ini mengembalikan tanggal yang dibulatkan berdasarkan format tertentu.
SELECT round(TO_DATE('27-OCT-00','DD-MON-YY'), 'YEAR');SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'), 'YEAR');
2001-01-01
2000-01-01
round(value date)
Fungsi ini mengembalikan tanggal yang dibulatkan berdasarkan format tertentu.
SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'));2000-02-27
Fungsi String
Fungsi
Deskripsi
Contoh
Nilai kembali
instr(str text, patt text, start integer, nth integer)
Fungsi ini mencari substring dalam string. Jika substring ditemukan, fungsi mengembalikan posisi substring. Jika tidak, fungsi mengembalikan 0. Parameter start menentukan posisi awal pencarian. Parameter nth menentukan posisi kemunculan ke-n dari substring.
SELECT instr('Hologres', 'o',1,2);SELECT instr('Hologres', 'o',1,1);
4
2
instr(str text, patt text, start integer)
Fungsi ini mengembalikan posisi kemunculan pertama dari substring dalam string.
SELECT instr('Hologres', 'o',4);4
instr(str text, patt text)
Fungsi ini mencari substring dari awal string.
SELECT instr('Hologres', 'o');2
plvstr.rvrs(str text, start integer, end integer)
Fungsi ini membalikkan urutan karakter dalam string tertentu. Parameter str menentukan string, dan parameter start dan end menentukan posisi awal dan akhir karakter yang ingin Anda balikkan.
SELECT plvstr.rvrs('Hologres', 5,6);rg
plvstr.rvrs(str text, start integer)
Fungsi ini membalikkan urutan karakter dari karakter yang ditentukan oleh parameter start hingga akhir string tertentu.
SELECT plvstr.rvrs('Hologres', 4);sergo
plvstr.rvrs(str text)
Fungsi ini membalikkan urutan seluruh string.
SELECT plvstr.rvrs('Hologres');sergoloH
substr(str text, start integer)
Fungsi ini mendapatkan karakter dari karakter yang ditentukan oleh parameter start hingga akhir string tertentu.
SELECT substr('Hologres', 1);SELECT substr('Hologres', 4);
Hologres
ogres
substr(str text, start integer, len integer)
Fungsi ini mendapatkan sejumlah karakter tertentu mulai dari karakter yang ditentukan oleh parameter start. Parameter len menentukan jumlah karakter yang ingin Anda dapatkan.
SELECT substr('Hologres', 5, 5);SELECT substr('Oracle functions', 5, 5);
gresle
lefun
Fungsi Lainnya
Fungsi
Deskripsi
Contoh
Nilai kembali
listagg(str text)
Fungsi ini mengembalikan string terkluster untuk teks.
SELECT listagg(t) FROM (VALUES('holo'), ('gres')) as l(t);hologres
listagg(str text, str text)
Fungsi ini mengembalikan string terkluster untuk teks. Nilai parameter kedua digunakan sebagai pemisah.
SELECT listagg(t, '.') FROM (VALUES('holo'), ('gres')) as l(t);holo.gres
concat(str text, str text)
Fungsi ini menggabungkan dua string bersama-sama.
SELECT concat('holo','gres');hologres
concat(str text, anyarray)
concat(anyarray, str text)
concat(anyarray, anyarray)
Fungsi ini menggabungkan data dari tipe data yang sama atau berbeda.
SELECT concat('hologres', 123);SELECT concat(123, 123);SELECT concat(current_date, 123);
hologres123
123123
2022-03-21123
nanvl(num real, num real)
nanvl(num decimal, num decimal)
Jika parameter pertama bertipe data NUMERIC, fungsi ini mengembalikan nilai parameter pertama. Jika tidak, fungsi ini mengembalikan nilai parameter kedua.
SELECT nanvl('NaN', 1.1);SELECT nanvl('1.2', 1.1);
1.1
1.2
bitand(num bigint, num bigint)
Fungsi ini melakukan operasi AND untuk dua bilangan biner bertipe INTEGER. Hanya satu baris yang dikembalikan.
SELECT bitand(1,3);SELECT bitand(2,6);SELECT bitand(4,6);
1
2
4
nvl2(anyelement, anyelement, anyelement)
Jika nilai parameter pertama adalah null, fungsi ini mengembalikan nilai parameter ketiga. Jika tidak, fungsi ini mengembalikan nilai parameter kedua.
SELECT nvl2(null, 1, 2);SELECT nvl2(0, 1, 2);
2
1
lnnvl(boolean)
Jika nilai parameter adalah null atau salah, fungsi ini mengembalikan benar. Jika nilai parameter adalah benar, fungsi ini mengembalikan salah.
SELECT lnnvl(null);SELECT lnnvl(false);SELECT lnnvl(true);
t
t
f
sinh(num double precision)
Fungsi ini mengembalikan nilai sinus hiperbolik.
SELECT sinh(0.1);0.100166750019844
tanh(num double precision)
Fungsi ini mengembalikan nilai tangen hiperbolik.
SELECT tanh(3);0.995054753686731
cosh(num double precision)
Fungsi ini mengembalikan nilai kosinus hiperbolik.
SELECT cosh(0.2);1.02006675561908
decode(expression, value, return [,value,return]... [, default])
Fungsi ini mencari nilai dari suatu ekspresi dan mengembalikan nilai tersebut jika ditemukan atau nilai default yang ditentukan jika tidak ditemukan.
CREATE TABLE t1(id int, name varchar(20)); INSERT INTO t1 values(1,'alibaba'); INSERT INTO t1 values(2,'hologres');SELECT decode(id, 1, 'alibaba', 2, 'hologres', 'not found') from t1;SELECT decode(id, 3, 'alibaba', 4, 'hologres', 'not found') from t1;
hologres alibabanot found not found
dump(anyelement)
Fungsi ini mengembalikan teks yang berisi kode tipe data, panjang dalam byte, dan representasi internal dari parameter pertama.
SELECT dump('hologres');Typ=25 Len=12: 48,0,0,0,104,111,108,111,103,114,101,115
dump(anyelement, num integer)
Fungsi ini mengembalikan teks. Parameter kedua menentukan sistem bilangan yang digunakan oleh representasi internal dari parameter pertama.
SELECT dump('hologres', 10);SELECT dump('hologres', 16);
Typ=25 Len=12: 48,0,0,0,104,111,108,111,103,114,101,115
Typ=25 Len=12: 30,0,0,0,68,6f,6c,6f,67,72,65,73
nlssort(str text, str text)
Fungsi ini mengurutkan data dalam urutan tertentu.
Eksekusi pernyataan berikut untuk membuat tabel dan menyisipkan data ke tabel:
CREATE TABLE t1 (name text); INSERT INTO t1 VALUES('Anne'), ('anne'), ('Bob'), ('bob');SELECT * FROM t1 ORDER BY nlssort(name, 'en_US.UTF-8');SELECT*FROM t1 ORDER BY nlssort(name, 'C');
anne Anne bob BobAnne Bob anne bob