SIMILAR TO - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SIMILAR TO

Operator MIRIP TO cocok dengan ekspresi string, seperti nama kolom, dengan pola ekspresi reguler standar SQL. Pola ekspresi reguler SQL dapat mencakup satu set metakarakter pencocokan pola, termasuk dua yang didukung oleh operator. SUKA

Operator SIMILAR TO mengembalikan true hanya jika polanya cocok dengan seluruh string, tidak seperti perilaku ekspresi reguler POSIX, di mana pola dapat cocok dengan bagian mana pun dari string.

MIRIP DENGAN melakukan kecocokan case-sensitive.

catatan

Pencocokan ekspresi reguler menggunakan SIMILAR TO mahal secara komputasi. Kami merekomendasikan menggunakan 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.

SIMILAR TO

MIRIP DENGAN melakukan kecocokan pola peka huruf besar/kecil untuk seluruh string dalam ekspresi.

pola

Ekspresi karakter UTF-8 yang valid mewakili pola ekspresi reguler standar SQL.

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 dapat berupa tipe data CHAR atau VARCHAR. Jika berbeda, Amazon Redshift mengubah pola ke tipe data ekspresi.

MIRIP DENGAN 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 reguler POSIX.

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