Operator perbandingan membandingkan nilai parameter untuk tipe data yang dapat dibandingkan seperti double, bigint, varchar, timestamp, dan date. Topik ini menjelaskan sintaks serta memberikan contohnya.
Operator perbandingan
Log Service mendukung operator perbandingan berikut.
|
Operator |
Sintaks |
Deskripsi |
SQL |
SPL |
|
x < y |
Mengembalikan true jika x lebih kecil dari y. |
√ |
√ |
|
|
x > y |
Mengembalikan true jika x lebih besar dari y. |
√ |
√ |
|
|
x <= y |
Mengembalikan true jika x lebih kecil dari atau sama dengan y. |
√ |
√ |
|
|
x >= y |
Mengembalikan true jika x lebih besar dari atau sama dengan y. |
√ |
√ |
|
|
x = y |
Mengembalikan true jika x sama dengan y. |
√ |
√ |
|
|
x <> y |
Mengembalikan true jika x tidak sama dengan y. |
√ |
√ |
|
|
x != y |
Mengembalikan true jika x tidak sama dengan y. |
√ |
√ |
|
|
x relational operator ALL(subquery) |
Mengembalikan true ketika x memenuhi semua kondisi. |
√ |
× |
|
|
x relational operator ANY(subquery) |
Mengembalikan true jika x memenuhi salah satu kondisi. |
√ |
× |
|
|
x BETWEEN y AND z |
Mengembalikan true jika x berada di antara y dan z, termasuk batasnya. |
√ |
√ |
|
|
x IS DISTINCT FROM y |
Mengembalikan true jika x tidak sama dengan y. Berbeda dengan operator <>, operator ini mengembalikan false jika x dan y keduanya NULL. |
√ |
× |
|
|
x IS NOT DISTINCT FROM y |
Mengembalikan true jika x sama dengan y. Berbeda dengan operator =, operator ini mengembalikan true jika x dan y keduanya NULL. |
√ |
× |
|
|
x LIKE pattern [escape 'escape_character'] |
Memeriksa apakah sebuah string sesuai dengan pola yang ditentukan. Operasi ini bersifat case-sensitive. |
√ |
√ |
|
|
x relational operator SOME(subquery) |
Mengembalikan true jika x memenuhi salah satu kondisi. |
√ |
× |
|
|
GREATEST(x, y...) |
Menemukan nilai maksimum dari x dan y. |
√ |
× |
|
|
LEAST(x, y...) |
Menemukan nilai minimum dari x dan y. |
√ |
× |
|
|
x IS NULL |
Mengembalikan true jika x adalah NULL. |
√ |
√ |
|
|
x IS NOT NULL |
Mengembalikan true jika x bukan NULL. |
√ |
√ |
Operator relasional
Operator relasional membandingkan nilai x dan y. Operator ini mengembalikan true jika kondisinya terpenuhi.
-
Sintaks
Sintaks
Deskripsi
x < y
Mengembalikan true jika x lebih kecil dari y.
x > y
Mengembalikan true jika x lebih besar dari y.
x <= y
Mengembalikan true jika x lebih kecil dari atau sama dengan y.
x >= y
Mengembalikan true jika x lebih besar dari atau sama dengan y.
x = y
Mengembalikan true jika x sama dengan y.
x <> y
Mengembalikan true jika x tidak sama dengan y.
x != y
Mengembalikan true jika x tidak sama dengan y.
-
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
y
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
-
Tipe nilai kembalian
boolean
-
Contoh
-
Contoh 1: Kueri log dari hari sebelumnya.
-
Pernyataan kueri
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) -
Hasil kueri: Kueri mengembalikan beberapa field log, termasuk
body_bytes_sent,client_ip,host,http_user_agent,http_x_forwarded_for,instance_id,instance_name,network_type,owner_id, danreferer. Field-field ini memberikan detail untuk setiap catatan akses, seperti ukuran badan permintaan, alamat IP klien, nama domain yang diakses, User-Agent, ID instans, nama instans, dan jenis jaringan.
-
-
Contoh 2: Untuk menemukan pelanggan yang lokasi nomor teleponnya berbeda dari lokasi IP aksesnya, sebuah perusahaan e-commerce melakukan kueri pada field mobile dan client_ip dalam log aksesnya.
-
Nilai field contoh
mobile:1881111**** client_ip:192.168.2.0 -
Pernyataan kueri
* | SELECT mobile, client_ip, count(*) AS PV WHERE mobile_city(mobile) != ip_to_city(client_ip) AND ip_to_city(client_ip) != '' GROUP BY client_ip, mobile ORDER BY PV DESC -
Hasil kueri: Kueri mengembalikan dua catatan. Informasi sensitif dalam kolom
mobiledanclient_iptelah dimasking. NilaiPVyang sesuai adalah 13 dan 12.
-
-
Operator ALL
Operator ALL membandingkan nilai x dengan semua nilai dalam set hasil subkueri. Operator ini mengembalikan true jika perbandingan tersebut benar untuk setiap nilai dalam set tersebut.
-
Sintaks
x relational operator ALL(subquery) -
Parameter
Parameter
Deskripsi
x
Nilai dari tipe data yang dapat dibandingkan apa pun.
comparison operator
<, >, <=, >=, =, <>, !=
PentingOperator ALL harus langsung mengikuti operator dasar (<, >, <=, >=, =, <>, !=).
subquery
Subkueri SQL.
Tipe nilai kembalian
Boolean
-
Contoh
Contoh ini memeriksa apakah semua permintaan untuk instans 'i-01' memiliki kode status 200.
-
Log contoh
instance_id:i-01 status:200 -
Pernyataan kueri dan analisis
* | select 200 = ALL(select status where instance_id='i-01') -
Hasil kueri dan analisis menunjukkan _col0 bernilai false. Ini berarti tidak semua log untuk instans 'i-01' memiliki status 200.
-
Operator ANY
Operator ANY membandingkan nilai x dengan sekumpulan nilai yang dikembalikan oleh subkueri. Operator ini mengembalikan true jika perbandingan tersebut benar untuk setidaknya satu nilai dalam set tersebut.
-
Sintaks
x relational operator ANY(subquery) -
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
relational operator
<, >, <=, >=, =, <>, atau !=
PentingOperator relasional harus mendahului operator
ANY.subquery
Subkueri yang mengembalikan satu kolom nilai. Tipe data kolom tersebut harus sesuai dengan tipe data ekspresi
x. -
Tipe nilai kembalian
boolean
-
Contoh
Periksa apakah ada permintaan untuk instans
i-01yang memiliki kode status 200.-
Field contoh
instance_id:i-01 status:200 -
Pernyataan kueri
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01') -
Kueri mengembalikan kolom
_col0dengan nilaitrue, yang menunjukkan bahwa kondisi tersebut terpenuhi.
-
Operator BETWEEN
BETWEEN digunakan untuk menentukan apakah x berada di antara y dan z. Jika ya, operator ini mengembalikan true. Rentang antara y dan z merupakan interval tertutup.
-
Sintaks
x BETWEEN y AND z -
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
y
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
z
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
Penting-
Tipe data x, y, dan z harus sama.
-
Jika nilai x, y, atau z adalah null, hasilnya adalah null.
-
-
Tipe nilai kembalian
Boolean
-
Contoh
-
Contoh 1: Periksa apakah nilai field status berada dalam rentang [200, 299].
-
Pernyataan kueri
* | SELECT status BETWEEN 200 AND 299 -
Hasil kueri dan analisis: Kueri mengembalikan tiga baris dalam kolom
_col0, dan nilai pada setiap baris adalahtrue. Ini menunjukkan bahwa nilai field status untuk setiap log yang sesuai berada di antara 200 dan 299.
-
-
Contoh 2: Hitung jumlah log di mana nilai field status tidak berada dalam rentang [200, 299].
-
Pernyataan kueri
* | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299 -
Hasil kueri dan analisis: Kueri mengembalikan count sebesar 250.
-
-
Operator DISTINCT
Operator DISTINCT membandingkan dua nilai, x dan y, serta menangani nilai NULL dengan benar.
-
Sintaks
-
IS DISTINCT FROM mengembalikan true jika x tidak sama dengan y.
x IS DISTINCT FROM y -
IS NOT DISTINCT FROM mengembalikan true jika x sama dengan y.
x IS NOT DISTINCT FROM y
-
-
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan.
y
Ekspresi dari tipe data yang dapat dibandingkan.
Berbeda dengan operator dasar (= dan <>), operator DISTINCT menangani nilai NULL dengan benar.
|
x |
y |
x = y |
x <> y |
x IS DISTINCT FROM y |
x IS NOT DISTINCT FROM y |
|
1 |
1 |
true |
false |
false |
true |
|
1 |
2 |
false |
true |
true |
false |
|
1 |
null |
null |
null |
true |
false |
|
null |
null |
null |
null |
false |
true |
-
Tipe nilai kembalian
Boolean
-
Contoh
Bandingkan 0 dengan null.
-
Pernyataan kueri
* | select 0 IS DISTINCT FROM null -
Hasil kueri adalah
true, yang menunjukkan bahwa 0 dan null berbeda.
-
Operator LIKE
Operator LIKE memeriksa apakah sebuah string sesuai dengan pola karakter yang ditentukan. Operasi ini bersifat case-sensitive.
-
Sintaks
x LIKE pattern [escape 'escape_character'] -
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
pattern
Pola karakter yang akan dicari, yang dapat mencakup string dan karakter wildcard. Karakter wildcard berikut didukung:
-
Tanda persen (%): Mencocokkan string apa pun dengan nol atau lebih karakter.
-
Garis bawah (_): Mencocokkan satu karakter apa pun.
escape_character
Karakter yang digunakan untuk meng-escape karakter wildcard dalam pola karakter.
CatatanOperator LIKE terutama digunakan untuk kueri pencocokan pola pada log. Untuk informasi lebih lanjut, lihat Cara melakukan kueri pencocokan eksak.
-
-
Tipe nilai kembalian
boolean
-
Contoh
SQL
-
Contoh 1: Kueri log di mana nilai field request_uri diakhiri dengan file-8 atau file-6.
-
Field contoh
request_uri:/request/path-2/file-6 -
Pernyataan kueri dan analisis
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6' -
Hasil kueri dan analisis: Kueri ini mengembalikan catatan log di mana field
request_uridiakhiri denganfile-8ataufile-6. Setiap catatan mencakup field sepertiremote_addr,remote_user,request_length,request_method,request_time,request_uri,scheme,server_protocol,slbid,status, dantime_local.
-
-
Contoh 2: Periksa apakah nilai field request_uri diakhiri dengan file-6.
-
Field contoh
request_uri:/request/path-2/file-6 -
Pernyataan kueri dan analisis
* | SELECT request_uri LIKE '%file-6' -
Kueri mengembalikan kolom
_col0dengan nilaitrue. Ini menunjukkan bahwa nilairequest_urisesuai dengan pola%file-6.
-
SPL
-
Contoh 1: Kueri log di mana nilai field request_uri diakhiri dengan file-8 atau file-6.
-
Field contoh
-
request_uri:/request/path-2/file-6-
Pernyataan SPL
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'-
Hasil SPL
Kueri mengembalikan semua entri log di mana nilai field request_uri diakhiri dengan file-8 atau file-6.
-
Contoh 2: Periksa apakah nilai field request_uri diakhiri dengan file-6.
-
Field contoh
-
request_uri:/request/path-2/file-6-
Pernyataan SPL
* | extend a = request_uri LIKE '%file-6'-
Hasil SPL
Hasil kueri mencakup field baru,
a, dengan nilaitrue. Ini menunjukkan bahwa nilai field request_uri dalam entri log diakhiri dengan file-6. -
Operator SOME
Operator SOME membandingkan nilai x dengan sekumpulan nilai yang dikembalikan oleh subkueri. Operator ini mengembalikan true jika perbandingan tersebut benar untuk salah satu nilai dalam set tersebut.
-
Sintaks
x relational operator SOME(subquery) -
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
relational operator
<, >, <=, >=, =, <>, !=
PentingOperator
SOMEharus langsung mengikuti operator relasional (<, >, <=, >=, =, <>, atau !=).subquery
Subkueri yang mengembalikan satu kolom nilai. Tipe data kolom tersebut harus sama dengan tipe data ekspresi x.
-
Tipe nilai kembalian
Boolean
-
Contoh
Periksa apakah ada permintaan yang terkait dengan instans
i-01yang memiliki waktu permintaan kurang dari 20 detik.-
Field contoh
instance_id:i-01 request_time:16 -
Pernyataan kueri
* | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01') -
Hasil kueri
-
Operator GREATEST
Operator GREATEST mengembalikan nilai maksimum dari x dan y.
Operator GREATEST digunakan untuk perbandingan horizontal, sedangkan fungsi max digunakan untuk perbandingan vertikal.
-
Sintaks
GREATEST(x, y...) -
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan.
y
Ekspresi dari tipe data yang dapat dibandingkan.
-
Tipe nilai kembalian
double
-
Contoh
Bandingkan nilai field request_time dan status dalam baris yang sama untuk menemukan nilai terbesar.
-
Field contoh
request_time:38 status:200 -
Pernyataan pencarian dan analisis
* | SELECT GREATEST(request_time,status) -
Hasil kueri dan analisis mencakup kolom
_col0dengan nilai200.0, yang merupakan nilai lebih besar antararequest_time(38) danstatus(200).
-
Operator LEAST
Operator LEAST mengembalikan nilai minimum dari x dan y.
Operator LEAST digunakan untuk perbandingan horizontal, sedangkan fungsi min digunakan untuk perbandingan vertikal.
-
Sintaks
LEAST(x, y...) -
Parameter
Parameter
Deskripsi
x
Nilai yang akan dibandingkan. Dapat berupa tipe data yang dapat dibandingkan apa pun.
y
Nilai yang akan dibandingkan. Dapat berupa tipe data yang dapat dibandingkan apa pun.
-
Tipe nilai kembalian
double -
Contoh
Bandingkan nilai field request_time dan nilai field status dalam baris yang sama untuk mendapatkan nilai minimum.
-
Field contoh
request_time:77 status:200 -
Pernyataan kueri dan analisis
* | SELECT LEAST(request_time,status) -
Hasil kueri dan analisis
Kueri mengembalikan 77.
-
Operator null
Operator null memeriksa apakah x bernilai null.
-
Sintaks
-
IS NULL: Mengembalikan true jika ekspresi bernilai null.
x IS NULL -
IS NOT NULL: Mengembalikan true jika ekspresi tidak bernilai null.
x IS NOT NULL
-
-
Parameter
Parameter
Deskripsi
x
Ekspresi dari tipe data yang dapat dibandingkan apa pun.
-
Tipe nilai kembalian
Boolean
-
Contoh
-
Contoh 1: Periksa apakah nilai field status bernilai null.
-
Pernyataan kueri
* | select status IS NULL -
Hasil kueri dan analisis: Kueri mengembalikan kolom
_col0. Kedua baris berisi nilaifalse, yang menunjukkan bahwa fieldstatustidak bernilai null.
-
-
Contoh 2: Hitung jumlah entri log di mana field status tidak bernilai null.
-
Pernyataan kueri
* | SELECT count(*) AS count FROM log WHERE status IS NOT NULL -
Hasil kueri dan analisis: Kueri mengembalikan count sebesar
1340.
-
-