Tous les produits
Search
Centre de documentation

MaxCompute:Opérateurs

Dernière mise à jour :Aug 10, 2026

Les opérateurs permettent de comparer des valeurs, d'effectuer des calculs, de manipuler des chaînes, de traiter des données binaires et de combiner des conditions logiques dans les instructions MaxCompute SQL.

Vue d'ensemble

MaxCompute prend en charge les types d'opérateurs suivants :

Type d'opérateur

Description

Opérateurs relationnels

Compare des valeurs et renvoie un résultat BOOLEAN.

Opérateurs de chaîne

Concatène des chaînes.

Opérateurs arithmétiques

Effectue des calculs mathématiques.

Opérateurs binaires

Effectue des opérations sur les représentations binaires des entiers.

Opérateurs logiques

Combine plusieurs conditions. Généralement utilisé avec des expressions BOOLEAN.

Opérateurs relationnels

Les opérateurs relationnels comparent deux valeurs et renvoient TRUE, FALSE ou NULL. Sauf indication contraire, si l'un des opérandes est NULL, le résultat est NULL.

Opérateur

Description

A = B

Renvoie TRUE si A est égal à B. Renvoie NULL si A ou B est NULL.

A<=>B

Égalité sécurisée pour NULL. Renvoie TRUE si A et B sont tous deux NULL. Renvoie FALSE si un seul est NULL. Sinon, renvoie TRUE si A est égal à B, ou FALSE dans le cas contraire.

A<>B

Renvoie TRUE si A n'est pas égal à B. Renvoie NULL si A ou B est NULL.

A<B

Renvoie TRUE si A est inférieur à B. Renvoie NULL si A ou B est NULL.

A<=B

Renvoie TRUE si A est inférieur ou égal à B. Renvoie NULL si A ou B est NULL.

A>B

Renvoie TRUE si A est supérieur à B. Renvoie NULL si A ou B est NULL.

A>=B

Renvoie TRUE si A est supérieur ou égal à B. Renvoie NULL si A ou B est NULL.

A IS NULL

Renvoie TRUE si A est NULL. Sinon, renvoie FALSE.

A IS NOT NULL

Renvoie TRUE si A n'est pas NULL. Sinon, renvoie FALSE.

A LIKE B

Correspondance de motif. Renvoie TRUE si la chaîne A correspond au motif B. Renvoie NULL si A ou B est NULL. Le caractère générique % correspond à zéro ou plusieurs caractères. Le caractère générique _ correspond à exactement un caractère. Pour faire correspondre un littéral % ou _, échappez-le avec des guillemets simples ('%' ou '_').

A RLIKE B

Correspondance d'expression régulière. Renvoie TRUE si la chaîne A correspond à l'expression régulière B. Renvoie NULL si A ou B est NULL. Renvoie une erreur si B est une chaîne vide. A RLIKE B équivaut à A REGEXP B.

A IN B

Renvoie TRUE si A se trouve dans l'ensemble B. Renvoie NULL si A est NULL. L'ensemble B doit être un ensemble constant contenant au moins un élément, et tous les éléments doivent être du même type de données.

A [NOT] BETWEEN B AND C

Renvoie TRUE si A est supérieur ou égal à B et inférieur ou égal à C (ou l'inverse avec NOT). Renvoie NULL si A, B ou C est NULL.

A IS [NOT] DISTINCT FROM B

Compare deux valeurs en traitant les valeurs NULL comme égales.

Exemples de motifs LIKE

'aaa' LIKE 'a__'    -- TRUE (underscore matches one character)
'aaa' LIKE 'a%'     -- TRUE (percent matches zero or more characters)
'aaa' LIKE 'aab'    -- FALSE
'a%b' LIKE 'a\\%b'  -- TRUE (escaped percent matches literal %)
'axb' LIKE 'a\\%b'  -- FALSE

Exemples d'utilisation

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%';

Notes importantes

Remarque

Des types incompatibles peuvent renvoyer NULL lors des comparaisons. Convertissez les opérandes en types compatibles avant de les comparer. Conversion de type de données.

Comparaison de valeurs DOUBLE

Ne comparez pas directement les valeurs DOUBLE avec = en raison de la précision limitée. Vérifiez plutôt si la différence absolue est inférieure à un seuil :

ABS(0.9999999999 - 1.0000000000) < 0.000000001
-- 0.9999999999 and 1.0000000000 have a precision of 10 decimal digits,
-- whereas 0.000000001 has a precision of 9 decimal digits.
-- 0.9999999999 is considered to be equal to 1.0000000000.
  • ABS est une fonction intégrée qui renvoie la valeur absolue de son entrée.

  • Une valeur DOUBLE dans MaxCompute offre généralement une précision de 14 chiffres décimaux.

Comparaison de valeurs STRING et BIGINT

La comparaison d'une valeur STRING avec une valeur BIGINT convertit implicitement les deux en DOUBLE, ce qui peut entraîner une perte de précision. Utilisez CAST(string_value AS BIGINT) pour convertir d'abord la valeur STRING en BIGINT.

Opérateurs de chaîne

Opérateur

Description

A||B

Concatène les chaînes A et B. Par exemple, a||b||c équivaut à CONCAT(a, b, c).

Exemple

SELECT first_name || ' ' || last_name AS full_name FROM employees;

Opérateurs arithmétiques

Les opérateurs arithmétiques effectuent des calculs mathématiques sur des valeurs numériques.

Opérateur

Description

A+B

Renvoie la somme de A et B. Renvoie NULL si A ou B est NULL.

A-B

Renvoie la différence entre A et B. Renvoie NULL si A ou B est NULL.

A*B

Renvoie le produit de A par B. Renvoie NULL si A ou B est NULL.

A/B

Renvoie le quotient de A divisé par B. Renvoie NULL si A ou B est NULL. Si A et B sont tous deux de type BIGINT, le résultat est de type DOUBLE.

A%B

Renvoie le reste de la division de A par B. Renvoie NULL si A ou B est NULL.

+A

Renvoie A (plus unaire).

-A

Renvoie l'opposé de A. Renvoie NULL si A est NULL.

A DIV B

Effectue la division entière de A par B, en ignorant la partie fractionnaire. Renvoie NULL si A ou B est NULL.

Exemple

SELECT age + 10, age - 10, age % 10, -age, age * age, age / 10, age DIV 10 FROM user;

Règles de type de données

  • Seuls les opérandes STRING, BIGINT, DOUBLE et TIMESTAMP_NTZ prennent en charge les opérations arithmétiques. Les valeurs Date et BOOLEAN ne sont pas prises en charge. Types de données MaxCompute TIMESTAMP_NTZ.

  • Les opérandes STRING sont implicitement convertis en DOUBLE avant le calcul.

  • Lorsque des opérandes BIGINT et DOUBLE sont mélangés, la valeur BIGINT est implicitement convertie en DOUBLE et le résultat est DOUBLE.

  • Si A et B sont tous deux de type BIGINT, A / B renvoie DOUBLE. Toutes les autres opérations arithmétiques sur deux opérandes BIGINT renvoient BIGINT.

Opérateurs binaires

Les opérateurs binaires travaillent sur la représentation binaire des entiers. Les deux opérandes doivent être de type BIGINT. Aucune conversion de type implicite ne s'applique.

Opérateur

Syntaxe

Description

& / BITAND

A & B ou BITAND(A, B)

Renvoie le ET binaire de A et B. Par exemple, 1 & 2 renvoie 0, et BITAND(1, 3) renvoie 1. Renvoie NULL si A ou B est NULL.

| / BITOR

A|B ou BITOR(A, B)

Renvoie le OU binaire de A et B. Par exemple, 1|2 renvoie 3, et BITOR(1, 3) renvoie 3. Renvoie NULL si A ou B est NULL.

~ / BITNOT

~A ou BITNOT(A)

Renvoie le NON binaire de A. Par exemple, ~1 renvoie -2, et BITNOT(7) renvoie -8. Renvoie NULL si A est NULL.

^ / BITXOR

A ^ B ou BITXOR(A, B)

Renvoie le OU exclusif binaire de A et B. Par exemple, 1 ^ 2 renvoie 3, et BITXOR(4, 5) renvoie 1. Renvoie NULL si A ou B est NULL.

Opérateurs logiques

Les opérateurs logiques combinent des expressions BOOLEAN. Seuls les opérandes BOOLEAN sont pris en charge ; aucune conversion de type implicite ne s'applique.

Les tables de vérité suivantes affichent les résultats pour toutes les combinaisons de TRUE, FALSE et NULL :

AND

A

B

A AND B

TRUE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

NULL

FALSE

NULL

FALSE

FALSE

TRUE

NULL

NULL

NULL

TRUE

NULL

NULL

NULL

NULL

OR

A

B

A OR B

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE

NULL

NULL

NULL

FALSE

NULL

TRUE

NULL

TRUE

NULL

TRUE

TRUE

NULL

NULL

NULL

NOT

A

NOT A

TRUE

FALSE

FALSE

TRUE

NULL

NULL

Priorité des opérateurs

Lorsqu'une expression contient plusieurs opérateurs, MaxCompute les évalue dans l'ordre suivant. Les numéros les plus bas ont la priorité la plus élevée. Les opérateurs de même niveau sont évalués de gauche à droite.

Priorité

Opérateurs

1 (la plus élevée)

IS (NOT) NULL

2

^

3

*, /, %, DIV

4

+, -

5

||

6

&

7

|

8

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

9

(NOT) IN, (NOT) BETWEEN AND

10

NOT

11

AND

12 (la plus basse)

OR

Utilisez des parenthèses pour remplacer la priorité par défaut. Par exemple :

a = 1 AND b = 1 OR c = 1       -- Evaluates AND first, then OR.
a = 1 AND (b = 1 OR c = 1)     -- Evaluates OR first (inside parentheses), then AND.