Hologres mendukung fungsi string berikut. Untuk daftar lengkap fungsi string yang kompatibel dengan PostgreSQL, lihat PostgreSQL Functions.
Indeks fungsi
Konkatenasi, pemisahan, dan padding string
| Function | Description |
|---|---|
| STRING || STRING | Menggabungkan dua string. |
| CONCAT | Menggabungkan dua atau lebih string, mengabaikan argumen NULL. |
| CONCAT_WS | Menggabungkan string dengan pemisah, mengabaikan argumen string NULL. |
| LISTAGG | Mengagregasi nilai kolom dari beberapa baris menjadi satu string. Kompatibel dengan Oracle; memerlukan ekstensi orafce. |
| STRING_AGG | Mengagregasi nilai kolom dari beberapa baris menjadi satu string. |
| LEFT | Mengekstrak karakter dari awal string. |
| RIGHT | Mengekstrak karakter dari akhir string. |
| SPLIT_PART | Memisahkan string berdasarkan pembatas dan mengembalikan segmen ke-*n*. |
| SUBSTRING | Mengekstrak substring berdasarkan posisi atau ekspresi reguler. Alias: SUBSTR (bentuk kompatibel Oracle). |
| SUBSTR | Mengekstrak substring dari posisi awal. Kompatibel dengan Oracle; memerlukan ekstensi orafce. Alias: SUBSTRING. |
| REGEXP_MATCH | Mencocokkan string terhadap ekspresi reguler dan mengembalikan hasil pencocokan sebagai array. |
| REGEXP_SPLIT_TO_TABLE | Memisahkan string berdasarkan ekspresi reguler dan mengembalikan setiap segmen sebagai baris terpisah. |
| REGEXP_SPLIT_TO_ARRAY | Memisahkan string berdasarkan ekspresi reguler dan mengembalikan segmen sebagai array. |
| TRIM | Menghapus karakter tertentu dari salah satu atau kedua ujung string. |
| BTRIM | Menghapus karakter tertentu dari kedua ujung string. |
| LTRIM | Menghapus karakter tertentu dari kiri (awal) string. |
| RTRIM | Menghapus karakter tertentu dari kanan (akhir) string. |
| LPAD | Melakukan left-padding pada string hingga panjang tertentu. |
| RPAD | Melakukan right-padding pada string hingga panjang tertentu. |
Fungsi string lainnya
| Function | Description |
|---|---|
| ASCII | Mengembalikan kode ASCII dari karakter pertama. |
| CHAR_LENGTH | Mengembalikan panjang karakter dari string. Alias: LENGTH. |
| LENGTH | Mengembalikan jumlah karakter dalam string. Alias: CHAR_LENGTH. |
| CHR | Mengembalikan karakter untuk nilai kode tertentu. |
| INITCAP | Mengubah huruf pertama setiap kata menjadi kapital. |
| LOWER | Mengonversi string menjadi huruf kecil. |
| UPPER | Mengonversi string menjadi huruf kapital. |
| OCTET_LENGTH | Mengembalikan jumlah byte dalam string. |
| MD5 | Mengembalikan hash MD5 dari string dalam format heksadesimal. |
| POSITION | Mengembalikan posisi substring dalam string. Alias: STRPOS. |
| STRPOS | Mengembalikan posisi substring dalam string. Alias: POSITION. |
| INSTR | Mengembalikan posisi substring dalam rentang tertentu dari string. Kompatibel dengan Oracle; memerlukan ekstensi orafce. |
| REPLACE | Mengganti semua kemunculan substring dengan string lain. |
| REGEXP_REPLACE | Mengganti substring yang cocok dengan ekspresi reguler POSIX. |
| TRANSLATE | Mengganti karakter individual dalam string. |
| REPEAT | Mengulang string sejumlah kali tertentu. |
| STARTS_WITH | Mengembalikan true jika string diawali dengan awalan tertentu. |
| PARSE_IDENT | Mengurai string identifier SQL qualified. |
| QUOTE_IDENT | Mengembalikan string yang dikutip sebagai identifier SQL yang valid. |
| QUOTE_LITERAL | Mengembalikan string yang dikutip sebagai konstanta string SQL yang valid. |
| TO_HEX | Mengonversi bilangan bulat ke representasi heksadesimalnya. |
| TO_NUMBER | Mengonversi string ke tipe numerik. |
| PLVSTR.RVRS | Membalik string. Kompatibel dengan Oracle; memerlukan ekstensi orafce. |
| ROW | Mengembalikan nomor baris dari baris saat ini. Didukung di Hologres V1.3 dan versi lebih baru. |
Konkatenasi, pemisahan, dan padding string
STRING \|\| STRING
Menggabungkan dua string.
Sintaks
<string_value1> TEXT || <string_value2> TEXTParameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
string_value1 | Ya | Ekspresi string pertama. |
string_value2 | Ya | Ekspresi string kedua. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: HologreSQL
SELECT 'Holo' || 'greSQL';CONCAT
Menggabungkan dua atau lebih string menjadi satu. Argumen NULL diabaikan.
Sintaks
CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str1, ..., strN | Ya | String yang akan digabungkan. Nilai NULL diabaikan. |
Tipe kembalian: TEXT
Contoh
SELECT CONCAT('abcde', 2, NULL, 22);Hasil:
concat
--------
abcde222CONCAT_WS
Menggabungkan semua argumen setelah argumen pertama, menggunakan argumen pertama sebagai pemisah.
Sintaks
CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...]])Tipe any menunjukkan bahwa semua tipe data diterima.
Parameter
Wajib:
sep: Pemisah yang disisipkan di antara setiap string. Jika sep bernilai NULL, fungsi mengembalikan NULL.
Opsional:
str: String yang akan digabungkan. Argumen string NULL diabaikan.
Tipe kembalian: TEXT
Contoh
SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);Hasil:
concat_ws
----------
abcde,2,22LISTAGG
Mengagregasi nilai dari kolom yang sama di beberapa baris menjadi satu string. Ini adalah fungsi kompatibel Oracle yang memerlukan ekstensi orafce. Untuk instruksi penyiapan, lihat Oracle-compatible functions.
Sintaks
LISTAGG(<str1> TEXT [, <str2> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str1 | Ya | Kolom atau ekspresi string yang akan diagregasi. |
str2 | Tidak | Pemisah antar nilai yang diagregasi. Default: tanpa pemisah. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: hologres
SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);-- Mengembalikan: holo.gres
SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);STRING_AGG
Mengagregasi nilai dari kolom yang sama di beberapa baris menjadi satu string.
Sintaks
STRING_AGG(expression [order_by_clause]) [FILTER (WHERE filter_clause)]Klausa FILTER didukung di Hologres V1.3 dan versi lebih baru. Untuk melakukan upgrade instans Anda, lihat Upgrade an instance. Untuk dukungan, bergabunglah dengan grup DingTalk Hologres. Untuk instruksi, lihat How do I get more online support?.Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
expression | Ya | Kolom atau ekspresi yang akan diagregasi. |
order_by_clause | Tidak | Menentukan urutan pengurutan nilai sebelum konkatenasi. Jika dihilangkan, urutan tidak dijamin. |
FILTER (WHERE filter_clause) | Tidak | Menyaring baris yang dimasukkan dalam agregasi. |
Tipe kembalian: TEXT
Contoh
Contoh 1: Mengagregasi semua nama kota menjadi satu string.
CREATE TABLE city_test (
country text,
city text
);
INSERT INTO city_test
VALUES ('China', 'Shanghai'), ('China', 'Taiwan'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('UK', 'London');
SELECT STRING_AGG(city, ',') FROM city_test;Hasil:
string_agg
-------------------------------
Shanghai,Taiwan,Tokyo,Paris,LondonContoh 2: Mengagregasi nama di mana student_id > 2.
CREATE TABLE name_text (
student_id int,
name text
);
INSERT INTO name_text
VALUES (1, 'Zhang San'), (2, 'Li Si'), (3, 'Wang Wu'), (4, 'Zhou Liu');
SELECT STRING_AGG(name, ',') FILTER (WHERE student_id > 2) FROM name_text;Hasil:
string_agg
-----------
Wang Wu,Zhou LiuLEFT
Mengekstrak jumlah karakter tertentu dari awal string.
Sintaks
LEFT(<str> TEXT, <num> INT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
num | Ya | Jumlah karakter yang diekstrak. Jika negatif, mengembalikan semua karakter kecuali -num karakter terakhir. |
Tipe kembalian: TEXT
Contoh
SELECT LEFT('hologres', 4);Hasil:
left
----
holoRIGHT
Mengekstrak jumlah karakter tertentu dari akhir string.
Sintaks
RIGHT(<str> TEXT, <num> INT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
num | Ya | Jumlah karakter yang diekstrak. Jika negatif, mengembalikan semua karakter kecuali -num karakter pertama. |
Tipe kembalian: TEXT
Contoh
SELECT RIGHT('hologres', 4);Hasil:
right
-----
gresSPLIT_PART
Memisahkan string berdasarkan pembatas dan mengembalikan segmen ke-*n*.
Sintaks
SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target yang akan dipisahkan. |
delimiter | Ya | Pembatas yang digunakan untuk pemisahan. |
num | Ya | Indeks berbasis 1 dari segmen yang akan dikembalikan. |
Tipe kembalian: TEXT
Catatan penggunaan
Jika
numlebih besar dari jumlah segmen, fungsi mengembalikan NULL.
Contoh
CREATE TABLE split_part_test (
a text
);
INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
SELECT split_part(a, '/', 2) FROM split_part_test;Hasil:
split_part
----------
b
b1SUBSTRING
Mengekstrak substring dari string target. Mendukung tiga bentuk: berbasis posisi, ekspresi reguler POSIX, dan ekspresi reguler SQL.
Sintaks
Berdasarkan posisi:
SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])Ekspresi reguler POSIX:
SUBSTRING(<str> TEXT FROM <pattern> TEXT)Ekspresi reguler SQL:
SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
num_start | Tidak | Posisi awal (berbasis 1). Default: 1. |
num_end | Tidak | Jumlah karakter yang diekstrak. Default: hingga akhir string. |
pattern | Ya (bentuk regex) | Ekspresi reguler yang dicocokkan. |
escape | Ya (regex SQL) | Karakter escape untuk karakter khusus seperti ., *, dan +. |
Tipe kembalian: TEXT
Contoh
Contoh 1: Mengekstrak substring berdasarkan posisi.
SELECT SUBSTRING('Thomas' FROM 2 FOR 3);Hasil:
substring
---------
homContoh 2: Mengekstrak substring yang cocok dengan ekspresi reguler POSIX.
SELECT SUBSTRING('Thomas' FROM '...$');Hasil:
substring
---------
masContoh 3: Mengekstrak substring yang cocok dengan ekspresi reguler SQL.
SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');Hasil:
substring
---------
omaSUBSTR
Mengekstrak substring dari posisi awal. Ini adalah fungsi kompatibel Oracle yang memerlukan ekstensi orafce. Untuk instruksi penyiapan, lihat Oracle-compatible functions.
Sintaks
Mengekstrak dari posisi awal hingga akhir:
SUBSTR(<str> TEXT, <num_start> INTEGER)Mengekstrak substring dengan panjang tetap:
SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
num_start | Ya | Posisi awal (berbasis 1). |
len | Tidak | Jumlah karakter yang diekstrak. Default: hingga akhir string. |
Tipe kembalian: TEXT
Contoh
Contoh 1: Mengekstrak dari karakter keempat hingga akhir.
-- Mengembalikan: ogres
SELECT SUBSTR('Hologres', 4);Contoh 2: Mengekstrak lima karakter mulai dari karakter kedua.
-- Mengembalikan: ologr
SELECT SUBSTR('Hologres', 2, 5);REGEXP_MATCH
Mencocokkan string terhadap ekspresi reguler dan mengembalikan hasil pencocokan sebagai array.
Sintaks
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String yang dicocokkan. |
pattern | Ya | Ekspresi reguler. |
Tipe kembalian: ARRAY
Contoh
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');Hasil:
regexp_match
------------
{bar,beque}REGEXP_SPLIT_TO_TABLE
Memisahkan string menggunakan ekspresi reguler dan mengembalikan setiap segmen sebagai baris terpisah. Gunakan fungsi ini untuk memperluas nilai yang dipisahkan menjadi baris.
Sintaks
REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String yang akan dipisahkan. |
pattern | Ya | Ekspresi reguler yang menentukan posisi pemisahan. |
Tipe kembalian: TEXT (satu baris per segmen)
Contoh
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_TABLE(intrests, ',') FROM interests_test;Hasil:
name | regexp_split_to_table
----------+----------------------
Zhang San | singing
Zhang San | dancing
Li Si | soccer
Li Si | running
Li Si | drawing
Wang Wu | flower arranging
Wang Wu | calligraphy
Wang Wu | playing piano
Wang Wu | sleepingREGEXP_SPLIT_TO_ARRAY
Memisahkan string menggunakan ekspresi reguler dan mengembalikan segmen sebagai array.
Sintaks
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String yang akan dipisahkan. |
pattern | Ya | Ekspresi reguler yang menentukan posisi pemisahan. |
Tipe kembalian: ARRAY
Contoh
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_ARRAY(intrests, ',') FROM interests_test;Hasil:
name | regexp_split_to_array
----------+----------------------------------------------------------
Zhang San | {singing,dancing}
Li Si | {soccer,running,drawing}
Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}TRIM
Menghapus karakter tertentu dari salah satu atau kedua ujung string.
Sintaks
TRIM([LEADING | TRAILING | BOTH] [<characters> TEXT] FROM <string> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
LEADING | TRAILING | BOTH | Tidak | Ujung yang dipangkas. Default: BOTH. |
characters | Tidak | Set karakter yang dihapus. Setiap karakter dicocokkan secara individual, bukan sebagai string utuh. Default: spasi. |
string | Ya | String target. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: Tom
SELECT TRIM(BOTH 'xyz' FROM 'yxTomxx');BTRIM
Menghapus karakter tertentu dari kedua ujung string.
Sintaks
BTRIM(<str> TEXT [, <characters> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
characters | Tidak | Set karakter yang dihapus dari kedua ujung. Setiap karakter dicocokkan secara individual, bukan sebagai string utuh. Default: spasi. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: trim
SELECT BTRIM('xyxtrimyyx', 'xyz');LTRIM
Menghapus karakter tertentu dari kiri (awal) string.
Sintaks
LTRIM(<str> TEXT [, <characters> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
characters | Tidak | Set karakter yang dihapus dari kiri. Setiap karakter dicocokkan secara individual, bukan sebagai string utuh. Default: spasi. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: test
SELECT LTRIM('zzzytest', 'xyz');RTRIM
Menghapus karakter tertentu dari kanan (akhir) string.
Sintaks
RTRIM(<str> TEXT [, <characters> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
characters | Tidak | Set karakter yang dihapus dari kanan. Setiap karakter dicocokkan secara individual, bukan sebagai string utuh. Default: spasi. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: test
SELECT RTRIM('testxxzx', 'xyz');Ketika nilai DECIMAL dikonversi ke TEXT, hasilnya menyimpan nol di belakang sesuai skala yang ditentukan, misalnya 2.00 alih-alih 2. Satu panggilan RTRIM yang hanya menghapus nol akan menyisakan titik desimal:
-- Mengembalikan: 2.
SELECT RTRIM(2.00::DECIMAL::TEXT, '0');Untuk menghapus nol di belakang beserta titik desimal sekaligus, gunakan dua panggilan RTRIM bersarang: panggilan pertama menghapus nol, dan panggilan kedua menghapus titik desimal.
-- Mengembalikan: 2
SELECT RTRIM(RTRIM(2.00::DECIMAL::TEXT, '0'), '.');Tabel berikut membandingkan hasil kedua ekspresi tersebut untuk nilai berbeda dalam kolom DECIMAL(10,2) bernama a:
Nilai | RTRIM(a::TEXT, '0') | RTRIM(RTRIM(a::TEXT, '0'), '.') |
0.00 | 0. | 0 |
1.10 | 1.1 | 1.1 |
2.00 | 2. | 2 |
3.50 | 3.5 | 3.5 |
10.00 | 10. | 10 |
LPAD
Menambahkan karakter pengisi di sebelah kiri string hingga mencapai panjang total tertentu.
Sintaks
LPAD(<str> TEXT, <length> INT [, <fill> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
length | Ya | Panjang total hasil. Jika str lebih panjang dari length, string dipotong dari kanan hingga panjang yang ditentukan. |
fill | Tidak | Karakter pengisi. Default: spasi. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: xyxhi
SELECT LPAD('hi', 5, 'xy');RPAD
Menambahkan karakter pengisi di sebelah kanan string hingga mencapai panjang total tertentu.
Sintaks
RPAD(<str> TEXT, <length> INT [, <fill> TEXT])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
length | Ya | Panjang total hasil. Jika str lebih panjang dari length, string dipotong dari kanan hingga panjang yang ditentukan. |
fill | Tidak | Karakter pengisi. Default: spasi. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: hixyx
SELECT RPAD('hi', 5, 'xy');Fungsi string lainnya
ASCII
Mengembalikan kode ASCII dari karakter pertama string.
Sintaks
ASCII(<str> TEXT)Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 120
SELECT ASCII('x');CHAR_LENGTH
Mengembalikan jumlah karakter dalam string. Setara dengan LENGTH.
Sintaks
LENGTH(<str> TEXT)Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 4
SELECT CHAR_LENGTH('jose');LENGTH
Mengembalikan jumlah karakter dalam string. Dalam encoding UTF-8, setiap karakter Tionghoa, angka, atau huruf dihitung sebagai satu karakter. Setara dengan CHAR_LENGTH.
Sintaks
LENGTH(<str> TEXT)Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 4
SELECT LENGTH('jose');CHR
Mengembalikan karakter yang sesuai dengan nilai kode ASCII atau Unicode tertentu.
Sintaks
CHR(<num> INT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: A
SELECT CHR(65);INITCAP
Mengubah huruf pertama setiap kata menjadi kapital dan sisanya menjadi huruf kecil. Kata adalah rangkaian karakter alfanumerik yang dipisahkan oleh karakter non-alfanumerik.
Sintaks
INITCAP(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: Hi Thomas
SELECT INITCAP('hi THOMAS');LOWER
Mengonversi string menjadi huruf kecil.
Sintaks
LOWER(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: tom
SELECT LOWER('TOM');UPPER
Mengonversi string menjadi huruf kapital.
Sintaks
UPPER(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: TOM
SELECT UPPER('tom');OCTET_LENGTH
Mengembalikan jumlah byte dalam string.
Sintaks
OCTET_LENGTH(<str> TEXT)Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 4
SELECT OCTET_LENGTH('jose');MD5
Menghitung hash MD5 dari string dan mengembalikan hasilnya sebagai string heksadesimal.
Sintaks
MD5(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: 900150983cd24fb0d6963f7d28e17f72
SELECT MD5('abc');POSITION
Mengembalikan posisi awal substring dalam string. Mengembalikan 0 jika substring tidak ditemukan. Setara dengan STRPOS.
Sintaks
POSITION(<substr> TEXT IN <str> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
substr | Ya | Substring yang dicari. |
str | Ya | String target. |
Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 3
SELECT POSITION('om' IN 'Thomas');STRPOS
Mengembalikan posisi awal substring dalam string. Mengembalikan 0 jika substring tidak ditemukan. Setara dengan POSITION.
Sintaks
STRPOS(<str> TEXT, <substr> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
substr | Ya | Substring yang dicari. |
Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 2
SELECT STRPOS('high', 'ig');INSTR
Mengembalikan posisi substring dalam string target, dengan kontrol opsional untuk posisi awal dan kemunculan. Mengembalikan 0 jika substring tidak ditemukan. Ini adalah fungsi kompatibel Oracle yang memerlukan ekstensi orafce. Untuk instruksi penyiapan, lihat Oracle-compatible functions.
Sintaks
INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER [, <nth> INTEGER]])Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
patt | Ya | Substring yang dicari. |
start | Tidak | Posisi untuk mulai mencari. Default: 1 (awal string). |
nth | Tidak | Kemunculan ke berapa yang dicari. Default: 1 (kemunculan pertama). |
Tipe kembalian: INTEGER
Contoh
-- Mengembalikan: 4 (kemunculan kedua 'o', mencari dari posisi 1)
SELECT INSTR('Hologres', 'o', 1, 2);-- Mengembalikan: 2 (kemunculan pertama 'o', mencari dari posisi 1)
SELECT INSTR('Hologres', 'o', 1, 1);-- Mengembalikan: 4 (kemunculan pertama 'o' pada atau setelah posisi 4)
SELECT INSTR('Hologres', 'o', 4);-- Mengembalikan: 2 (kemunculan pertama 'o')
SELECT INSTR('Hologres', 'o');REPLACE
Mengganti semua kemunculan substring dalam string.
Sintaks
REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
old_str | Ya | Substring yang diganti. |
new_str | Ya | String pengganti. |
Tipe kembalian: TEXT
Contoh
CREATE TABLE animal_test (
animal text,
color text
);
INSERT INTO animal_test
VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
SELECT animal, REPLACE(color, 'white', 'multi-colored') FROM animal_test;Hasil:
animal | replace
-------+--------------
dog | multi-colored
cat | multi-colored
tiger | yellowREGEXP_REPLACE
Mengganti substring yang cocok dengan ekspresi reguler POSIX dengan string pengganti.
Sintaks
REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT])Parameter
Wajib:
| Parameter | Deskripsi |
|---|---|
str | String target. |
regex | Ekspresi reguler POSIX yang dicocokkan. |
replacement | String pengganti. |
Opsional:
flags: Satu atau beberapa karakter yang mengontrol perilaku pencocokan. Default: hanya mengganti kecocokan pertama, case-sensitive.
| Flag | Deskripsi |
|---|---|
g | Mengganti semua kemunculan (default hanya mengganti yang pertama). |
i | Pencocokan case-insensitive. |
m | Mode multi-baris. |
s | Mode single-line: . mencocokkan newline. |
Tipe kembalian: TEXT
Contoh
CREATE TABLE a_test (
a text
);
INSERT INTO a_test VALUES ('Abcd1234abCd');
SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;Hasil:
regexp_replace
--------------
Abcd77bCdTRANSLATE
Mengganti karakter individual dalam string berdasarkan pemetaan karakter.
Sintaks
TRANSLATE(<str> TEXT, <substr> TEXT, <newstr> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
substr | Ya | Set karakter yang diganti. |
newstr | Ya | Karakter pengganti, dipetakan secara posisional ke substr. Jika newstr lebih pendek dari substr, karakter tambahan dalam substr dihapus dari hasil. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: a2x5
SELECT TRANSLATE('12345', '143', 'ax');REPEAT
Mengulang string sejumlah kali tertentu.
Sintaks
REPEAT(<str> TEXT, <number> INT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String yang diulang. |
number | Ya | Jumlah pengulangan. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: PgPgPgPg
SELECT REPEAT('Pg', 4);STARTS_WITH
Mengembalikan true jika string diawali dengan awalan tertentu.
Sintaks
STARTS_WITH(<str> TEXT, <prefix> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
prefix | Ya | Awalan yang diperiksa. |
Tipe kembalian: BOOLEAN (t untuk true, f untuk false)
Contoh
-- Mengembalikan: t
SELECT STARTS_WITH('alphabet', 'alph');PARSE_IDENT
Mengurai string identifier SQL qualified dan mengembalikan komponennya sebagai array. Komponen tanpa tanda kutip diubah menjadi huruf kecil; komponen bertanda kutip mempertahankan kapitalisasinya.
Sintaks
PARSE_IDENT(<quali_iden> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
quali_iden | Ya | Identifier SQL qualified, seperti nama tabel fully qualified. |
Tipe kembalian: TEXT (format array)
Contoh
-- Mengembalikan: {"SomeSchema","sometable"}
SELECT PARSE_IDENT('"SomeSchema".someTable');QUOTE_IDENT
Mengembalikan string yang dikutip sebagai identifier SQL yang valid, menambahkan tanda kutip ganda bila diperlukan (misalnya, ketika string berisi spasi atau huruf kapital yang seharusnya tidak diubah menjadi huruf kecil).
Sintaks
QUOTE_IDENT(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: "Foo bar"
SELECT QUOTE_IDENT('Foo bar');QUOTE_LITERAL
Mengembalikan string yang dikutip sebagai konstanta string SQL yang valid, dengan meng-escape tanda kutip tunggal bila diperlukan.
Sintaks
QUOTE_LITERAL(<str> TEXT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: 'O''Reilly'
SELECT QUOTE_LITERAL(E'O\'Reilly');TO_HEX
Mengonversi bilangan bulat ke representasi string heksadesimalnya.
Sintaks
TO_HEX(<number> INT | BIGINT)Tipe kembalian: TEXT
Contoh
-- Mengembalikan: 7fffffff
SELECT TO_HEX(2147483647);TO_NUMBER
Mengonversi string berformat ke nilai numerik menggunakan model format.
Sintaks
TO_NUMBER(<str1> TEXT, <str2> TEXT)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str1 | Ya | String yang akan dikonversi. |
str2 | Ya | Model format yang menentukan cara mengurai string. |
Tipe kembalian: NUMERIC
Contoh
-- Mengembalikan: -12454.8
SELECT TO_NUMBER('12,454.8-', '99G999D9S');PLVSTR.RVRS
Membalik sebagian atau seluruh string. Ini adalah fungsi kompatibel Oracle yang memerlukan ekstensi orafce. Untuk instruksi penyiapan, lihat Oracle-compatible functions.
Sintaks
Membalik seluruh string:
PLVSTR.RVRS(<str> TEXT)Membalik dari posisi awal hingga akhir:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER)Membalik rentang tertentu:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
str | Ya | String target. |
start | Tidak | Posisi awal rentang yang dibalik (berbasis 1). Default: 1. |
end | Tidak | Posisi akhir rentang yang dibalik. Default: akhir string. |
Tipe kembalian: TEXT
Contoh
-- Mengembalikan: sergoloH (seluruh string dibalik)
SELECT PLVSTR.RVRS('Hologres');-- Mengembalikan: sergo (dibalik dari posisi 4 hingga akhir)
SELECT PLVSTR.RVRS('Hologres', 4);-- Mengembalikan: rg (posisi 5-6 dibalik)
SELECT PLVSTR.RVRS('Hologres', 5, 6);ROW
Mengembalikan nomor baris dari baris saat ini. Didukung di Hologres V1.3 dan versi lebih baru.
Untuk melakukan upgrade instans Anda ke V1.3 atau versi lebih baru, lihat Upgrade an instance. Untuk dukungan, bergabunglah dengan grup DingTalk Hologres. Untuk instruksi, lihat How do I get more online support?.
Sintaks
ROW(<val1>, <val2>, ...)Tipe kembalian: ARRAY atau TEXT
Contoh
Contoh berikut mengembalikan baris di mana kolom a dan kolom b memiliki nilai yang sama.
CREATE TABLE row_test (
a text,
b text
);
INSERT INTO row_test VALUES ('0', '0'), ('1', '0');
SELECT a, b FROM row_test WHERE ROW(a, b) = ROW(b, a);Hasil:
a | b
--+--
0 | 0