Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SIMILAR TO
Operator SIMILAR 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 mencocokkan bagian mana pun dari string.
MIRIP TO melakukan kecocokan peka huruf besar-kecil.
catatan
Pencocokan ekspresi reguler menggunakan SIMILAR TO mahal secara komputasi. Sebaiknya gunakan LIKE bila memungkinkan, terutama saat memproses sejumlah besar baris. Misalnya, kueri berikut secara fungsional identik, 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%';
Sintaksis
expression [ NOT ] SIMILAR TO pattern [ ESCAPE 'escape_char' ]
Argumen
- ekspresi
-
Eksp UTF-8 resi karakter yang valid, seperti nama kolom.
- SIMILAR TO
-
SIMILAR TO melakukan kecocokan pola peka huruf besar-kecil untuk seluruh string dalam ekspresi.
- pola
-
Eksp UTF-8 resi karakter 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 mengon versi pola ke tipe data ekspresi.
SIMILAR TO mendukung metakarakter pencocokan pola berikut:
| Operator | Deskripsi |
|---|---|
% |
Cocokkan urutan nol atau lebih karakter. |
_ |
Cocokkan dengan karakter tunggal. |
| |
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 persis m kali. |
{m,} |
Ulangi item sebelumnya m atau lebih kali. |
{m,n} |
Ulangi item sebelumnya setidaknya m dan tidak lebih dari n kali. |
() |
Kurung mengelompokkan item menjadi satu item logis. |
[...] |
Ekspresi tanda kurung 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