全部产品
Search
文档中心

MaxCompute:Operator

更新时间:Jul 02, 2025

Operator merupakan elemen kunci dalam pernyataan SQL. Operator memungkinkan Anda menjalankan tugas pengambilan dan pemrosesan data yang kompleks, membantu mencapai pemrosesan data yang lebih efisien, penilaian kondisional, atau operasi lainnya. Topik ini menjelaskan format dan makna operator yang didukung oleh MaxCompute serta memberikan contoh penggunaannya.

Tabel berikut menunjukkan jenis-jenis operator yang didukung oleh MaxCompute.

Jenis Operator

Deskripsi

Operator Relasional

Digunakan untuk operasi perbandingan.

Operator Karakter

Digunakan untuk operasi penggabungan string.

Operator Aritmatika

Digunakan untuk operasi aritmatika.

Operator Bitwise

Digunakan untuk operasi pada digit biner.

Operator Logika

Digunakan untuk menghubungkan beberapa kondisi. Dalam kebanyakan kasus, operator logika digunakan untuk menghubungkan ekspresi atau nilai tipe BOOLEAN.

Operator Relasional

Operator

Deskripsi

A=B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A sama dengan B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A<=>B

  • Jika A dan B keduanya NULL, TRUE dikembalikan.

  • Jika A atau B adalah NULL, FALSE dikembalikan.

  • Jika A sama dengan B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A<>B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A tidak sama dengan B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A<B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A kurang dari B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A<=B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A kurang dari atau sama dengan B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A>B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A lebih besar dari B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A>=B

  • Jika A atau B adalah NULL, maka NULL dikembalikan.

  • Jika A lebih besar dari atau sama dengan B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A IS NULL

Jika A adalah NULL, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A IS NOT NULL

Jika A bukan NULL, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

A LIKE B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika String A cocok dengan Pola B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

  • Tanda persen (%) cocok dengan sejumlah karakter sembarang.

  • Garis bawah (_) cocok dengan satu karakter tunggal.

  • Untuk mencocokkan tanda persen (%) atau garis bawah (_), Anda harus meloloskan tanda persen (%) atau garis bawah (_) dengan tanda kutip tunggal ('). Setelah tanda persen (%) atau garis bawah (_) diloloskan, '%' atau '_' digunakan untuk pencocokan.

'aaa' like 'a__'= TRUE 
'aaa' like 'a%' = TRUE
'aaa' like 'aab'= FALSE 
'a%b' like 'a\\%b'= TRUE 
'axb' like 'a\\%b'= FALSE 

A RLIKE B

Jika String A cocok dengan String Konstan B atau Ekspresi Reguler B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan. Jika B adalah string kosong, kesalahan akan dikembalikan. Jika A atau B adalah NULL, maka NULL dikembalikan.

Catatan

"A RLIKE B" memiliki efek yang sama dengan "A REGEXP B."

A IN B

  • Jika A termasuk dalam Set B, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

  • Jika A adalah NULL, maka NULL dikembalikan.

  • Set B harus merupakan set konstan dan berisi setidaknya satu elemen. Semua elemen dalam Set B harus memiliki tipe data yang sama.

BETWEEN AND

Ekspresinya adalah A [NOT] BETWEEN B AND C.

  • Jika A, B, atau C adalah NULL, maka NULL dikembalikan.

  • Jika A lebih besar dari atau sama dengan B dan kurang dari atau sama dengan C, TRUE dikembalikan. Jika tidak, FALSE dikembalikan.

IS [NOT] DISTINCT FROM

Ekspresinya adalah A IS [NOT] DISTINCT FROM B.

Penggunaan umum dalam pernyataan:

SELECT * FROM user WHERE user_id = '0001'; 
SELECT * FROM user WHERE user_name <> 'maggie'; 
SELECT * FROM user WHERE age > '50'; 
SELECT * FROM user WHERE birth_day >= '1980-01-01 00:00:00'; 
SELECT * FROM user WHERE is_female is null; 
SELECT * FROM user WHERE is_female is not null; 
SELECT * FROM user WHERE user_id in (0001,0010); 
SELECT * FROM user WHERE user_name like 'M%';

Sebelum melakukan operasi relasional, Anda harus mengonversi tipe data terlebih dahulu. Jika tidak, hasilnya mungkin NULL. Untuk informasi lebih lanjut tentang konversi tipe data, lihat Konversi Tipe.

Nilai tipe DOUBLE di MaxCompute memiliki presisi yang berbeda. Oleh karena itu, disarankan untuk tidak menggunakan tanda sama dengan (=) saat membandingkan dua nilai tipe DOUBLE. Sebagai alternatif, Anda dapat mengurangi satu nilai DOUBLE dari nilai DOUBLE lainnya, lalu mendapatkan nilai absolut untuk perbandingan. Jika nilai absolut tersebut dapat diabaikan, kedua nilai DOUBLE dianggap sama. Contoh:

ABS(0.9999999999 - 1.0000000000) < 0.000000001
 -- 0.9999999999 dan 1.0000000000 memiliki presisi 10 digit desimal, sedangkan 0.000000001 memiliki presisi 9 digit desimal. 
 -- 0.9999999999 dianggap sama dengan 1.0000000000.

Catatan
  • ABS adalah fungsi bawaan yang disediakan oleh MaxCompute. Fungsi ini digunakan untuk mendapatkan nilai absolut dari inputnya. Untuk informasi lebih lanjut, lihat ABS.

  • Dalam kebanyakan kasus, nilai tipe DOUBLE di MaxCompute dapat memberikan presisi hingga 14 digit desimal.

  • Jika Anda membandingkan nilai tipe STRING dengan nilai tipe BIGINT, tipe data nilai-nilai tersebut akan dikonversi secara otomatis menjadi DOUBLE. Kehilangan presisi mungkin terjadi selama perbandingan. Untuk mengatasi masalah ini, Anda dapat menggunakan CAST STRING AS BIGINT untuk mengonversi tipe STRING menjadi BIGINT.

Operator Karakter

Operator

Deskripsi

A||B

Digunakan untuk operasi penggabungan karakter. Misalnya, a||b||c setara dengan CONCAT(a, b, c).

Operator Aritmatika

Operator

Deskripsi

A+B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, hasil dari A ditambah B dikembalikan.

A-B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, hasil dari A dikurangi B dikembalikan.

A*B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, hasil dari A dikalikan B dikembalikan.

A/B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, hasil dari A dibagi B dikembalikan.

Catatan

Jika A dan B bertipe BIGINT, nilai yang dikembalikan bertipe DOUBLE.

A%B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, sisa dari A dibagi B dikembalikan.

+A

A dikembalikan.

-A

Jika A adalah NULL, maka NULL dikembalikan. Jika tidak, -A dikembalikan.

A DIV B

Jika A atau B adalah NULL, maka NULL dikembalikan. Jika tidak, hasil dari A DIV B dikembalikan.

Penggunaan umum dalam pernyataan:

SELECT age+10, age-10, age%10, -age, age*age, age/10, age div 10 FROM user;
Catatan
  • Hanya nilai bertipe STRING, BIGINT, DOUBLE, dan TIMESTAMP_NTZ yang dapat digunakan dalam operasi aritmatika. Nilai tanggal dan nilai bertipe BOOLEAN tidak dapat digunakan dalam operasi aritmatika. Untuk informasi lebih lanjut tentang tipe data TIMESTAMP_NTZ, lihat Tipe Data TIMESTAMP_NTZ MaxCompute.

  • Nilai bertipe STRING secara implisit dikonversi menjadi tipe DOUBLE sebelum operasi aritmatika.

  • Jika Anda menggunakan nilai bertipe BIGINT dan DOUBLE dalam operasi aritmatika, nilai bertipe BIGINT akan dikonversi secara implisit menjadi tipe DOUBLE sebelum operasi. Nilai yang dikembalikan bertipe DOUBLE.

  • Jika A dan B bertipe BIGINT, nilai yang dikembalikan bertipe DOUBLE setelah Anda melakukan operasi A/B. Untuk operasi aritmatika lainnya, nilai yang dikembalikan bertipe BIGINT.

Operator Bitwise

Operator

Contoh

Deskripsi

  • BITAND

  • &

  • BITAND(A,B)

  • A&B

Hasil AND bitwise dari A dan B dikembalikan. Misalnya, hasil dari 1&2 adalah 0, hasil dari BITAND(1,3) adalah 1, dan hasil AND bitwise dari NULL dan nilai apa pun adalah NULL. A dan B harus bertipe BIGINT.

  • BITOR

  • |

  • BITOR(A,B)

  • A|B

Hasil OR bitwise dari A dan B dikembalikan. Misalnya, hasil dari 1|2 adalah 3, hasil dari BITOR(1,3) adalah 3, dan hasil OR bitwise dari NULL dan nilai apa pun adalah NULL. A dan B harus bertipe BIGINT.

  • BITNOT

  • ~

  • BITNOT(A)

  • ~A

Hasil NOT bitwise dari A dikembalikan. Misalnya, hasil dari ~1 adalah -2, hasil dari BITNOT(7) adalah -8, dan hasil NOT bitwise dari nilai NULL adalah NULL. A harus bertipe BIGINT.

  • BITXOR

  • ^

  • BITXOR(A,B)

  • A^B

Hasil XOR bitwise dari A dan B dikembalikan. Misalnya, hasil dari 1^2 adalah 3, hasil dari BITXOR(4,5) adalah 1, dan hasil XOR bitwise dari NULL dan nilai apa pun adalah NULL. A dan B harus bertipe BIGINT.

Catatan

Operator bitwise tidak mendukung konversi tipe implisit. Anda hanya dapat menggunakan nilai bertipe BIGINT dalam operasi bitwise.

Operator Logika

Operator

Deskripsi

A and B

TRUE and TRUE=TRUE

TRUE and FALSE=FALSE

FALSE and TRUE=FALSE

FALSE and FALSE=FALSE

FALSE and NULL=FALSE

NULL and FALSE=FALSE

TRUE and NULL=NULL

NULL and TRUE=NULL

NULL and NULL=NULL

A or B

TRUE or TRUE=TRUE

TRUE or FALSE=TRUE

FALSE or TRUE=TRUE

FALSE or FALSE=FALSE

FALSE or NULL=NULL

NULL or FALSE=NULL

TRUE or NULL=TRUE

NULL or TRUE=TRUE

NULL or NULL=NULL

NOT A

Jika A adalah NULL, maka NULL dikembalikan.

Jika A adalah TRUE, maka FALSE dikembalikan.

Jika A adalah FALSE, maka TRUE dikembalikan.

Catatan

Operator logika tidak mendukung konversi tipe implisit. Anda hanya dapat menggunakan nilai bertipe BOOLEAN dalam operasi logika.

Prioritas Operator

Tabel berikut mencantumkan prioritas operator dalam urutan menurun. Jika operator memiliki prioritas yang sama, operasi dilakukan dari kiri ke kanan secara default.

Operator

Prioritas

IS (NOT) NULL

1

^

2

*, /, %, DIV

3

+, -

4

||

5

&

6

|

7

(NOT) LIKE, (NOT) RLIKE, =, ==, IS (NOT) DISTINCT FROM, <>, !=, <=, <, >=, >

8

(NOT) IN, (NOT) BETWEEN AND

9

NOT

10

AND

11

OR

12

Untuk memprioritaskan beberapa operasi, gunakan tanda kurung (). Contoh:

a=1 and b=1 or c=1        -- Pertama hitung a=1 AND b=1, lalu lakukan operasi OR.
a=1 and (b=1 or c=1)      -- Pertama hitung b=1 OR c=1, lalu lakukan operasi AND.