Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SIMILARUNTUK
Operator SIMILAR TO cocok dengan ekspresi string, seperti nama kolom, dengan pola ekspresi reguler SQL standar. Pola ekspresi SQL reguler dapat mencakup satu set metakarakter pencocokan pola, termasuk dua yang didukung oleh operator. LIKE
Operator SIMILAR TO mengembalikan true hanya jika polanya cocok dengan seluruh string, tidak seperti perilaku ekspresi POSIX reguler, di mana pola dapat cocok dengan bagian mana pun dari string.
SIMILARTO melakukan kecocokan peka huruf besar/kecil.
catatan
Pencocokan ekspresi reguler menggunakan SIMILAR TO mahal secara komputasi. Kami merekomendasikan penggunaan LIKE bila memungkinkan, terutama saat memproses sejumlah besar baris. Misalnya, kueri berikut identik secara fungsional, tetapi kueri yang menggunakan LIKE berjalan beberapa kali lebih cepat daripada kueri yang menggunakan ekspresi reguler:
select count(*) from event where eventname SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';
Sintaks
expression [ NOT ] SIMILAR TO pattern [ ESCAPE 'escape_char' ]
Argumen
- ekspresi
-
Ekspresi karakter UTF -8 yang valid, seperti nama kolom.
- SIMILARUNTUK
-
SIMILARTO melakukan kecocokan pola peka huruf besar/kecil untuk seluruh string dalam ekspresi.
- pola
-
Ekspresi karakter UTF -8 yang valid mewakili pola ekspresi reguler SQL standar.
- escape_char
-
Ekspresi karakter yang akan lolos dari metakarakter dalam pola. Defaultnya adalah dua garis miring terbalik ('\\').
Jika pola tidak mengandung metakarakter, maka pola hanya mewakili string itu sendiri.
Salah satu ekspresi karakter bisa CHAR atau tipe VARCHAR data. Jika berbeda, Amazon Redshift mengonversi pola ke tipe data ekspresi.
SIMILARTO mendukung metakarakter pencocokan pola berikut:
Operator | Deskripsi |
---|---|
% |
Cocokkan dengan urutan nol atau lebih karakter. |
_ |
Cocokkan karakter tunggal apa pun. |
| |
Menunjukkan pergantian (salah satu dari dua alternatif). |
* |
Ulangi item sebelumnya nol atau lebih kali. |
+ |
Ulangi item sebelumnya satu kali atau lebih. |
? |
Ulangi item sebelumnya nol atau satu kali. |
{m} |
Ulangi item sebelumnya tepat m kali. |
{m,} |
Ulangi item sebelumnya m atau lebih kali. |
{m,n} |
Ulangi item sebelumnya setidaknya m dan tidak lebih dari n kali. |
() |
Tanda kurung mengelompokkan item menjadi satu item logis. |
[...] |
Ekspresi braket menentukan kelas karakter, seperti dalam ekspresi POSIX reguler. |
Contoh
Tabel berikut menunjukkan contoh pencocokan pola menggunakan SIMILAR TO:
Ekspresi | Pengembalian |
---|---|
'abc' SIMILAR TO 'abc' |
True |
'abc' SIMILAR TO '_b_' |
Benar |
'abc' SIMILAR TO '_A_' |
Salah |
'abc' SIMILAR TO '%(b|d)%' |
Benar |
'abc' SIMILAR TO '(b|c)%' |
Salah |
'AbcAbcdefgefg12efgefg12' SIMILAR TO
'((Ab)?c)+d((efg)+(12))+' |
Benar |
'aaaaaab11111xy' SIMILAR TO 'a{6}_
[0-9]{5}(x|y){2}' |
Benar |
'$0.87' SIMILAR TO '$[0-9]+(.[0-9][0-9])?'
|
True |
Contoh berikut menemukan kota yang namanya mengandung “E” atau “H”:
SELECT DISTINCT city FROM users WHERE city SIMILAR TO '%E%|%H%' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights
Contoh berikut menggunakan string escape default ('\\
') untuk mencari string yang menyertakan "_
“:
SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start\\_%' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy
Contoh berikut menentukan '^
' sebagai string escape, kemudian menggunakan string escape untuk mencari string yang menyertakan "“_
:
SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start^_%' ESCAPE '^' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy