Topik ini menjelaskan fungsi string yang didukung oleh Lindorm SQL dan memberikan contoh penggunaannya.
Mesin dan versi yang berlaku
Fungsi string yang dijelaskan dalam topik ini hanya berlaku untuk LindormTable versi 2.5.1.1 dan yang lebih baru.
Untuk informasi lebih lanjut tentang cara melihat dan meningkatkan versi LindormTable, lihat Catatan Rilis LindormTable dan Tingkatkan Versi Mesin Minor dari Instance Lindorm.
Fungsi string yang didukung
Tabel berikut mencantumkan fungsi string yang didukung oleh Lindorm SQL.
Fungsi | Deskripsi |
Menggabungkan beberapa string menjadi string baru. | |
Menghitung panjang string. | |
Mengonversi semua huruf dalam string menjadi huruf kecil. | |
Menghitung hash MD5 dari string. | |
Menghitung hash SHA256 dari string. | |
Mengganti substring yang cocok dengan aturan tertentu dengan substring baru. | |
Membalikkan string. | |
Mengganti substring yang cocok dengan aturan tertentu dengan substring baru mulai dari posisi tertentu dalam string. | |
Mengembalikan substring yang dimulai dari posisi tertentu dalam string dan cocok dengan aturan tertentu. | |
Mengembalikan substring dengan panjang tertentu. | |
Menentukan apakah awalan string cocok dengan string tertentu. | |
Menghapus spasi di awal dan akhir string. | |
Mengonversi semua huruf dalam string menjadi huruf besar. | |
Memeriksa apakah nilai kolom yang ditentukan cocok dengan aturan tertentu. |
CONCAT
Fungsi CONCAT menggabungkan beberapa string menjadi satu string baru.
Sintaksis
CONCAT('string1','string2',...,'stringN')Parameter
Parameter | Wajib | Deskripsi |
'string1','string2',...,'stringN' | Ya | String yang ingin Anda gabungkan. |
Contoh
Menggabungkan stringa, b, dan c menjadi stringabc.
SELECT concat('a','b','c') AS val;Hasil yang dikembalikan:
+--------+
| val |
+--------+
| abc |
+--------+String gabungan tanpa pemisah dikembalikan.
LENGTH
Fungsi LENGTH menghitung panjang string.
Sintaksis
LENGTH('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
Contoh
Menghitung panjang stringabc.
SELECT length('abc') AS len;Hasil yang dikembalikan:
+-----+
| len |
+-----+
| 3 |
+-----+Nilai yang dikembalikan 3 menunjukkan bahwa panjang stringabc adalah 3 karakter.
LOWER
Fungsi LOWER mengonversi semua huruf dalam string menjadi huruf kecil.
Sintaksis
LOWER('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda konversi. |
Contoh
Contoh 1: Mengonversi semua huruf dalam string
ABCmenjadi huruf kecil.SELECT lower('ABC') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | abc | +--------+String abc dikembalikan, dengan semua huruf dalam string asli diubah menjadi huruf kecil.
Contoh 2: Mengonversi semua huruf dalam string
Abcmenjadi huruf kecil.SELECT lower('Abc') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | abc | +--------+String abc dikembalikan, dengan semua huruf besar dalam string asli diubah menjadi huruf kecil.
MD5
Fungsi MD5 menghitung hash MD5 dari string.
Sintaksis
MD5('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
Contoh
Menghitung hash MD5 dari stringabc.
SELECT md5('abc') AS val;Hasil yang dikembalikan:
+----------------------------------+
| val |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+Hash MD5 dari stringabc dikembalikan.
SHA256
Fungsi SHA256 menghitung hash SHA256 dari string.
Sintaksis
SHA256('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
Contoh
Dalam contoh ini, tabel sampel dibuat dan diisi dengan menjalankan pernyataan berikut:
-- Buat tabel sampel.
CREATE TABLE tb (id int, name varchar, address varchar, PRIMARY KEY(id, name));
-- Masukkan data ke dalam tabel yang dibuat.
UPSERT INTO tb (id, name, address) VALUES (1, 'jack', 'hz');Kueri hash SHA256 dari nilai di kolomname baris yangid-nya1.
SELECT sha256(name) AS sc FROM tb WHERE id=1;Hasil yang dikembalikan:
+------------------------------------------------------------------+
| sc |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+Hash SHA256 dari stringjack dikembalikan.
REPLACE
Fungsi REPLACE mengganti substring yang cocok dengan aturan tertentu dengan substring baru.
Sintaksis
REPLACE('string','from_str','to_str')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
from_str | Ya | Substring yang ingin Anda ganti. |
to_str | Ya | Substring yang ingin Anda gunakan untuk mengganti substring yang cocok dengan aturan. |
Contoh
Contoh 1: Ganti semua substring yang cocok dengan substring
bcdalam stringabcdengan substringcd.SELECT replace('abc','bc','cd') AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | acd | +-----+Stringacd dikembalikan. Substring
bcdalam stringabcdiganti dengan substringcd.Contoh 2: Ganti semua substring yang cocok dengan substring
bcdalam stringabcbcdengan substringcd.SELECT replace('abcbc', 'bc', 'cd') AS val;Hasil yang dikembalikan:
+-------+ | val | +-------+ | acdcd | +-------+Stringacdcd dikembalikan. Semua substring
bcdalam stringabcbcdiganti dengan substringcd.
REVERSE
Fungsi REVERSE membalikkan string.
Sintaksis
REVERSE('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
Contoh
Balikkan stringabc.
SELECT reverse('abc') AS val;Hasil yang dikembalikan:
+-----+
| val |
+-----+
| cba |
+-----+Stringcba dikembalikan. String ini adalah kebalikan dari string abc.
REGEXP_REPLACE
Fungsi REGEXP_REPLACE mengganti substring yang cocok dengan aturan tertentu dengan substring baru mulai dari posisi tertentu dalam string.
Sintaksis
REGEXP_REPLACE('string',pat,rep,[pos])Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
pattern | Ya | Ekspresi reguler yang digunakan untuk menentukan aturan pencocokan. |
rep | Ya | Substring yang ingin Anda gunakan untuk mengganti substring yang cocok dengan aturan. |
position | Tidak | Posisi dari mana substring yang akan diganti diperiksa berdasarkan aturan. Nilai parameter ini adalah bilangan bulat lebih besar dari atau sama dengan 1. Jika Anda tidak menentukan parameter ini, fungsi akan memeriksa substring yang dimulai dari karakter pertama string berdasarkan aturan. |
Contoh
Contoh 1: Tidak menentukan parameter
pos. Dalam hal ini, fungsi memeriksa substring yang dimulai dari karakter pertama string dan mengganti substring yang cocok dengan substringbdengan substringc.SELECT regexp_replace('abc', 'b', 'c') AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | acc | +-----+Stringacc dikembalikan. Substring yang cocok dengan substring
bdiganti dengan substringc.Contoh 2: Tetapkan parameter
posmenjadi 2. Dalam hal ini, fungsi memeriksa substring yang dimulai dari karakter kedua string dan mengganti substring yang cocok dengan substringbdengan substringc.SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;Hasil yang dikembalikan:
+-------+ | val | +-------+ | acccc | +-------+
Stringacccc dikembalikan. Fungsi memeriksa substring yang dimulai dari karakter kedua dan cocok dengan substringb dalam stringabcbc, lalu menggantinya dengan substringc.
Contoh 3: Tetapkan parameter
posmenjadi 3. Dalam hal ini, fungsi memeriksa substring yang dimulai dari karakter ketiga string dan mengganti substring yang cocok dengan substringbdengan substringc.SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;Hasil yang dikembalikan:
+-------+ | val | +-------+ | abccc | +-------+Stringabccc dikembalikan. Fungsi memeriksa substring yang dimulai dari karakter ketiga dan cocok dengan substring
bdalam stringabcbc, lalu menggantinya dengan substringc.
REGEXP_SUBSTR
Fungsi REGEXP_SUBSTR mengembalikan substring yang dimulai dari posisi tertentu dalam string dan cocok dengan aturan tertentu.
Sintaksis
REGEXP_SUBSTR('string', pat, [pos])Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
pattern | Ya | Ekspresi reguler yang digunakan untuk menentukan aturan pencocokan. |
position | Tidak | Posisi dari mana substring yang akan diperiksa berdasarkan aturan. Nilai parameter ini adalah bilangan bulat lebih besar dari atau sama dengan 1. Jika Anda tidak menentukan parameter ini, fungsi akan memeriksa substring yang dimulai dari karakter pertama string berdasarkan aturan. |
Contoh
Contoh 1: Tetapkan parameter
posmenjadi 3. Dalam hal ini, fungsi memeriksa apakah substring yang dimulai dari karakter ketiga stringabccocok dengan substringbyang ditentukan oleh aturan.SELECT regexp_substr('abc', 'b', 3) AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | | +-----+Tidak ada nilai yang dikembalikan, yang menunjukkan bahwa tidak ada substring yang dimulai dari karakter ketiga string abc yang cocok dengan substring
b.Contoh 2: Tidak menentukan parameter
pos. Dalam hal ini, fungsi memeriksa apakah substring yang dimulai dari karakter pertama stringabccocok dengan substringbyang ditentukan oleh aturan.SELECT regexp_substr('abc', 'b') AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | b | +-----+Substring b dikembalikan. Substring ini dipotong setelah karakter pertama dari string "abc" dan sesuai dengan aturan.
SUBSTR
Fungsi SUBSTR mengembalikan substring dengan panjang tertentu.
Sintaksis
SUBSTR( string, pos, [len])Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
position | Ya | Posisi dari mana substring dipotong. Nilai parameter ini adalah bilangan bulat lebih besar dari atau sama dengan 1. |
len | Tidak | Panjang substring yang ingin Anda potong. Nilai parameter ini adalah bilangan bulat lebih besar dari atau sama dengan 1. Jika Anda tidak menentukan parameter ini, substring dari posisi yang ditentukan oleh |
Contoh
Contoh 1: Tidak menentukan parameter
len. Dalam hal ini, substring dari karakter kedua hingga akhir stringabcdikembalikan secara default.SELECT substr('abc', 2) AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | bc | +-----+Substringbc dikembalikan. Substring ini dipotong dari karakter kedua hingga akhir string
abc.Contoh 2: Tentukan parameter
len. Dalam hal ini, substring dari karakter pertama hingga karakter kedua stringabcdikembalikan.SELECT substr('abc', 1, 2) AS val;Hasil yang dikembalikan:
+-----+ | val | +-----+ | ab | +-----+Substringab dikembalikan. Substring ini dipotong dari karakter pertama hingga karakter kedua string
abc.
START_WITH
Fungsi START_WITH menentukan apakah awalan string cocok dengan string tertentu.
Sintaksis
START_WITH('string1', 'string2')Parameter
Parameter | Wajib | Deskripsi |
string1 | Ya | String yang ingin Anda proses. |
string2 | Ya | String yang Anda gunakan untuk mencocokkan awalan. |
Contoh
Contoh 1: Tentukan apakah string
abadalah awalan dari stringabc.SELECT start_with('abc', 'ab') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | true | +--------+Nilai yang dikembalikan adalahtrue, yang menunjukkan bahwa string
abadalah awalan dari stringabc.Contoh 2: Tentukan apakah string
bcadalah awalan dari stringabc.SELECT start_with('abc', 'bc') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | false | +--------+Nilai yang dikembalikan adalahfalse, yang menunjukkan bahwa string
bcbukan awalan dari stringabc.
TRIM
Fungsi TRIM menghapus spasi di awal dan akhir string.
Sintaksis
TRIM('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda proses. |
Contoh
Hapus spasi di awal dan akhir stringabc.
SELECT trim(' abc ') AS str;Hasil yang dikembalikan:
+-----+
| str |
+-----+
| abc |
+-----+String dengan spasi di awal dan akhir yang dihapus dikembalikan.
UPPER
Fungsi UPPER mengonversi semua huruf dalam string menjadi huruf besar.
Sintaksis
UPPER('string')Parameter
Parameter | Wajib | Deskripsi |
string | Ya | String yang ingin Anda konversi. |
Contoh
Contoh 1: Mengonversi semua huruf dalam string
abcmenjadi huruf besar.SELECT upper('abc') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | ABC | +--------+StringABC dikembalikan, dengan semua huruf dalam string asli diubah menjadi huruf besar.
Contoh 2: Mengonversi semua huruf dalam string
aBCmenjadi huruf besar.SELECT upper('aBC') AS val;Hasil yang dikembalikan:
+--------+ | val | +--------+ | ABC | +--------+StringABC dikembalikan. Semua huruf kecil dalam string asli dikonversi menjadi huruf besar.
MATCH
FungsiMATCH menentukan apakah nilai kolom yang ditentukan cocok dengan aturan tertentu.
Hanya LindormTable versi 2.7.2 dan yang lebih baru yang mendukung fungsi
MATCH. Anda dapat memperbarui versi minor dari versi saat ini ke 2.7.2 atau yang lebih baru.
Fungsi
MATCHhanya bekerja dengan indeks pencarian. Ketika sebuah kueri mengandung fungsiMATCHdan indeks pencarian ada, sistem secara otomatis menggunakan indeks pencarian tersebut.
Catatan penggunaan
Sebelum menggunakan fungsi MATCH untuk kueri, perhatikan masalah kinerja dan persyaratan indeks berikut ini:
Untuk kueri yang berisi kolom non-terindeks, sistem pertama-tama memeriksa kolom terindeks melalui indeks pencarian, kemudian melakukan penyaringan baris-per-baris pada kolom non-terindeks dalam set hasil. Karena kinerja kueri berkorelasi dengan tingkat keberhasilan kondisi indeks, operasi penyaringan pada dataset besar dapat menurunkan kinerja. Dalam kasus ini, Anda dapat menjalankan pernyataan ADD COLUMN untuk menambahkan kolom non-terindeks yang ingin Anda kueri ke indeks pencarian sesuai dengan kebutuhan bisnis Anda.
Saat ini, tabel utama dan indeks sekunder tidak mendukung fungsi
MATCH. Saat fungsiMATCHdigunakan dalam kueri, sistem langsung menggunakan indeks pencarian. Jika Anda perlu menjalankan kueri terhadap tabel utama atau indeks sekunder, Anda dapat mengubah kueri token menjadi kueri kabur dengan menambahkan kata kunciLIKEke dalam pernyataan kueri Anda, asalkan kebutuhan kueri Anda terpenuhi.nullKueri kabur dapat bekerja pada tabel utama dan indeks sekunder, tetapi memberikan kinerja kueri yang lebih buruk dibandingkan kueri token.
Untuk kueri yang menggabungkan fungsi
MATCHdan kata kunciLIKE, Anda harus mengonfigurasi kolom yang sesuai sebagai kolom token saat Anda membuat indeks pencarian.
Sintaksis
MATCH (column_identifiers) AGAINST (search_expr)Anda hanya dapat menggunakan fungsi MATCH dalam klausa
WHEREuntuk kueri SQL.Secara default, data hasil dari pernyataan kueri yang berisi fungsi MATCH diurutkan dalam urutan terbalik berdasarkan kedekatan nilai kolom dengan aturan yang ditentukan.
Parameter
Parameter | Diperlukan | Deskripsi |
column_identifiers | Ya | Kolom yang ingin Anda cocokkan dengan aturan yang ditentukan. Anda dapat memasukkan beberapa kolom. Pisahkan kolom dengan koma (,). Jika Anda memasukkan beberapa kolom, kolom tersebut akan digabungkan dan kemudian dicocokkan dengan aturan yang ditentukan. null Anda harus membuat indeks pencarian untuk kolom yang ditentukan oleh parameter column_identifiers. Analyzer dikonfigurasikan untuk kolom tersebut guna segmentasi kata. Untuk informasi lebih lanjut, lihat Aktifkan fitur indeks pencarian dan CREATE INDEX. |
search_expr | Ya | Konstanta string yang digunakan sebagai aturan pencocokan. Untuk informasi lebih lanjut, lihat bagian Deskripsi aturan pencocokan dari topik ini. |
Deskripsi aturan pencocokan
Aturan pencocokan terdiri dari satu atau lebih kondisi. Pisahkan kondisi-kondisi tersebut dengan spasi. Kondisi dapat berupa salah satu dari item berikut:
Sebuah kata tunggal. Data yang mengandung kata yang ditentukan memenuhi kondisi ini. Contoh:
hello.Frase yang diapit oleh tanda kutip ganda (""). Data yang mengandung seluruh frase tanpa segmentasi kata memenuhi kondisi ini. Sebagai contoh,
"hello world"menunjukkan bahwa data yang mengandung frase"hello world"memenuhi aturan tersebut.Aturan pencocokan lain yang diapit oleh tanda kurung (()). Data yang cocok dengan aturan pencocokan yang diapit oleh tanda kurung memenuhi kondisi ini. Contoh:
(another "hello world").
Anda dapat mengubah perilaku pencocokan suatu kondisi dengan menambahkan simbol sebelum kondisi tersebut:
+menunjukkan bahwa kondisi tersebut harus dipenuhi.-menunjukkan bahwa kondisi tersebut tidak boleh dipenuhi.Jika tidak ada simbol yang ditambahkan sebelum suatu kondisi, kondisi tersebut tidak wajib. Namun, data yang memenuhi kondisi tersebut dapat memperoleh peringkat yang lebih tinggi.
Contoh
Dalam contoh-contoh berikut, tabel sampel dibuat dan diisi dengan mengeksekusi pernyataan-pernyataan berikut:
-- Buat tabel sampel bernama tb.
CREATE TABLE tb (id INT, c1 VARCHAR, PRIMARY KEY(id));
-- Buat indeks pencarian. Sebelum membuat indeks pencarian, pastikan bahwa fitur indeks pencarian diaktifkan.
CREATE INDEX idx USING SEARCH ON tb (c1(type=text));
-- Masukkan data ke dalam tabel.
UPSERT INTO tb (id,c1) VALUES (1,'hello');
UPSERT INTO tb (id,c1) VALUES (2,'world');
UPSERT INTO tb (id,c1) VALUES (3,'hello world');
UPSERT INTO tb (id,c1) VALUES (4,'hello my world');
UPSERT INTO tb (id,c1) VALUES (5,'hello you');
UPSERT INTO tb (id,c1) VALUES (6,'hello you and me');
UPSERT INTO tb (id,c1) VALUES (7,'you and me');Contoh 1: Kueri data yang mengandung kata
helloatauworlddi kolomc1.SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello world');Hasil berikut dikembalikan:
+----+------------------+ | id | c1 | +----+------------------+ | 3 | hello world | | 2 | world | | 4 | hello my world | | 5 | hello you | | 1 | hello | | 6 | hello you and me | +----+------------------+Contoh 2: Kueri data yang mungkin mengandung kata
hellodan harus mengandung kataworlddi kolomc1.SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello +world');Hasil berikut dikembalikan:
+----+----------------+ | id | c1 | +----+----------------+ | 3 | hello world | | 2 | world | | 4 | hello my world | +----+----------------+Contoh 3: Kueri data yang mengandung kata
worldtetapi tidak mengandung katahellodi kolomc1.SELECT * FROM tb WHERE MATCH (c1) AGAINST ('-hello +world');Hasil berikut dikembalikan:
+----+-------+ | id | c1 | +----+-------+ | 2 | world | +----+-------+Contoh 4: Kueri data yang mengandung frasa
hello worlddi kolomc1.SELECT * FROM tb WHERE MATCH (c1) AGAINST ('"hello world"');Hasil berikut dikembalikan:
+----+-------------+ | id | c1 | +----+-------------+ | 3 | hello world | +----+-------------+Contoh 5: Kueri data yang harus mengandung kata
hellodan setidaknya satu kata dari kata-katayoudanmedi kolomc1.SELECT * FROM tb WHERE MATCH (c1) AGAINST ('+hello +(you me)');Hasil berikut dikembalikan:
+----+------------------+ | id | c1 | +----+------------------+ | 6 | hello you and me | | 5 | hello you | +----+------------------+