Operator POSIX - Amazon Redshift

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

Operator POSIX

Ekspresi reguler POSIX adalah urutan karakter yang menentukan pola kecocokan. String cocok dengan ekspresi reguler jika itu adalah anggota dari set reguler yang dijelaskan oleh ekspresi reguler.

Ekspresi reguler POSIX memberikan sarana yang lebih kuat untuk pencocokan pola daripada SIMILAR TO operator SUKA dan. Pola ekspresi reguler POSIX dapat cocok dengan setiap bagian dari string, tidak seperti operator SIMILAR TO, yang mengembalikan true hanya jika polanya cocok dengan seluruh string.

catatan

Pencocokan ekspresi reguler menggunakan operator POSIX 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 ~ '.*(Ring|Die).*'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';

Sintaks

expression [ ! ] ~ pattern

Argumen

ekspresi

Ekspresi karakter UTF-8 yang valid, seperti nama kolom.

!

Operator negasi. Tidak cocok dengan ekspresi reguler.

~

Lakukan kecocokan peka huruf besar/kecil untuk setiap substring ekspresi.

catatan

A ~~ adalah sinonim untuk. SUKA

pola

Sebuah string literal yang mewakili pola ekspresi reguler.

Jika pola tidak mengandung karakter wildcard, maka pola hanya mewakili string itu sendiri.

Untuk mencari string yang menyertakan metakarakter, seperti '. * | ? ', dan seterusnya, hindari karakter menggunakan dua garis miring terbalik (''). \\ Tidak seperti SIMILAR TO danLIKE, sintaks ekspresi reguler POSIX tidak mendukung karakter escape yang ditentukan pengguna.

Salah satu ekspresi karakter dapat berupa tipe data CHAR atau VARCHAR. Jika berbeda, Amazon Redshift mengubah pola ke tipe data ekspresi.

Semua ekspresi karakter dapat berupa tipe data CHAR atau VARCHAR. Jika ekspresi berbeda dalam tipe data, Amazon Redshift mengonversinya menjadi tipe data ekspresi.

Pencocokan pola POSIX mendukung metakarakter berikut:

POSIX Deskripsi
. Cocokkan karakter tunggal apa pun.
* Cocokkan nol atau lebih kejadian.
+ Cocokkan satu atau lebih kejadian.
? Cocokkan nol atau satu kejadian.
| Menentukan kecocokan alternatif; misalnya, E | H berarti E atauH.
^ Cocokkan beginning-of-line karakter.
$ Cocokkan end-of-line karakter.
$ Cocokkan ujung string.
[ ] Tanda kurung menentukan daftar yang cocok, yang harus cocok dengan satu ekspresi dalam daftar. Tanda sisipan (^) mendahului daftar yang tidak cocok, yang cocok dengan karakter apa pun kecuali ekspresi yang diwakili dalam daftar.
( ) Tanda kurung mengelompokkan item menjadi satu item logis.
{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.
[: :] Cocokkan karakter apa pun dalam kelas karakter POSIX. Di kelas karakter berikut, Amazon Redshift hanya mendukung karakter ASCII:,,, [:alnum:] [:alpha:] [:lower:] [:upper:]

Amazon Redshift mendukung kelas karakter POSIX berikut.

Kelas Karakter Deskripsi
[[:alnum:]] Semua karakter alfanumerik ASCII
[[:alpha:]] Semua karakter alfabet ASCII
[[:blank:]] Semua karakter ruang kosong
[[:cntrl:]] Semua karakter kontrol (nonprinting)
[[:digit:]] Semua digit numerik
[[:lower:]] Semua huruf kecil ASCII karakter alfabet
[[:punct:]] Semua karakter tanda baca
[[:space:]] Semua karakter spasi (nonprinting)
[[:upper:]] Semua huruf besar ASCII karakter alfabet
[[:xdigit:]] Semua karakter heksadesimal yang valid

Amazon Redshift mendukung operator yang dipengaruhi Perl berikut dalam ekspresi reguler. Melarikan diri dari operator menggunakan dua garis miring terbalik ('\\').  

Operator Deskripsi Ekspresi kelas karakter yang setara
\\d Karakter digit [[:digit:]]
\\D Karakter nondigit [^[:digit:]]
\\w Karakter kata [[:word:]]
\\W Karakter non-kata [^[:word:]]
\\s Karakter spasi putih [[:space:]]
\\S Karakter ruang non-putih [^[:space:]]
\\b Sebuah kata batas

Contoh

Tabel berikut menunjukkan contoh pencocokan pola menggunakan operator POSIX:

Ekspresi Pengembalian
'abc' ~ 'abc' True
'abc' ~ 'a' Benar
'abc' ~ 'A' Salah
'abc' ~ '.*(b|d).*' Benar
'abc' ~ '(b|c).*' Benar
'AbcAbcdefgefg12efgefg12' ~ '((Ab)?c)+d((efg)+(12))+' Benar
'aaaaaab11111xy' ~ 'a{6}.[1]{5}(x|y){2}' Benar
'$0.87' ~ '\\$[0-9]+(\\.[0-9][0-9])?' Benar
'ab c' ~ '[[:space:]]' Benar
'ab c' ~ '\\s' Benar
' ' ~ '\\S' False

Contoh berikut menemukan kota yang namanya mengandung E atauH:

SELECT DISTINCT city FROM users WHERE city ~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights

Contoh berikut menemukan kota yang namanya tidak mengandung E atauH:

SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Aberdeen Abilene Ada Agat Agawam

Contoh berikut menggunakan escape string ('\\') untuk mencari string yang menyertakan titik.

SELECT venuename FROM venue WHERE venuename ~ '.*\\..*' ORDER BY venueid; venuename ------------------------------ St. Pete Times Forum Jobing.com Arena Hubert H. Humphrey Metrodome U.S. Cellular Field Superpages.com Center E.J. Nutter Center Bernard B. Jacobs Theatre St. James Theatre