Todos los productos
Search
Centro de documentos

MaxCompute:Operadores

Última actualización: Oct 10, 2026

Los operadores permiten comparar valores, efectuar cálculos, manipular cadenas, trabajar con datos binarios y combinar condiciones lógicas en las instrucciones SQL de MaxCompute.

Descripción general

MaxCompute admite los siguientes tipos de operadores:

Tipo de operador

Descripción

Relational operators

Comparan valores y devuelven un resultado BOOLEAN.

String operators

Concatenan cadenas.

Arithmetic operators

Ejecutan cálculos matemáticos.

Bitwise operators

Operan sobre la representación binaria de números enteros.

Logical operators

Combinan varias condiciones. Se usan habitualmente con expresiones BOOLEAN.

Operadores relacionales

Los operadores relacionales comparan dos valores y devuelven TRUE, FALSE o NULL. Salvo que se indique lo contrario, si alguno de los operandos es NULL, el resultado también es NULL.

Operador

Descripción

A = B

Devuelve TRUE si A es igual a B. Devuelve NULL si A o B es NULL.

A<=>B

Igualdad segura para NULL. Devuelve TRUE si tanto A como B son NULL. Devuelve FALSE si solo uno de ellos es NULL. En los demás casos, devuelve TRUE si A es igual a B, o FALSE si no lo es.

A<>B

Devuelve TRUE si A no es igual a B. Devuelve NULL si A o B es NULL.

A<B

Devuelve TRUE si A es menor que B. Devuelve NULL si A o B es NULL.

A<=B

Devuelve TRUE si A es menor o igual que B. Devuelve NULL si A o B es NULL.

A>B

Devuelve TRUE si A es mayor que B. Devuelve NULL si A o B es NULL.

A>=B

Devuelve TRUE si A es mayor o igual que B. Devuelve NULL si A o B es NULL.

A IS NULL

Devuelve TRUE si A es NULL. De lo contrario, devuelve FALSE.

A IS NOT NULL

Devuelve TRUE si A no es NULL. De lo contrario, devuelve FALSE.

A LIKE B

Coincidencia de patrones. Devuelve TRUE si la cadena A coincide con el patrón B. Devuelve NULL si A o B es NULL. El comodín % coincide con cero o más caracteres. El comodín _ coincide exactamente con un carácter. Para buscar una coincidencia literal de % o _, escápelo con comillas simples ('%' o '_').

A RLIKE B

Coincidencia de expresiones regulares. Devuelve TRUE si la cadena A coincide con la expresión regular B. Devuelve NULL si A o B es NULL. Devuelve un error si B es una cadena vacía. A RLIKE B equivale a A REGEXP B.

A IN B

Devuelve TRUE si A está en el conjunto B. Devuelve NULL si A es NULL. El conjunto B debe ser constante, contener como mínimo un elemento y todos sus elementos deben tener el mismo tipo de datos.

A [NOT] BETWEEN B AND C

Devuelve TRUE si A es mayor o igual que B y menor o igual que C (o lo inverso si se usa NOT). Devuelve NULL si A, B o C es NULL.

A IS [NOT] DISTINCT FROM B

Compara dos valores y trata los valores NULL como iguales.

Ejemplos de patrones 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

Ejemplos de uso

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

Notas importantes

Nota

Las comparaciones entre tipos incompatibles pueden devolver NULL. Convierta los operandos a tipos compatibles antes de compararlos. Data type conversion.

Comparación de valores DOUBLE

No compare valores DOUBLE directamente con = debido a su precisión limitada. En su lugar, compruebe si la diferencia absoluta es menor que un umbral:

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 es una función integrada que devuelve el valor absoluto de su entrada.

  • Un valor DOUBLE en MaxCompute suele ofrecer una precisión de 14 dígitos decimales.

Comparación de valores STRING y BIGINT

Al comparar STRING con BIGINT, ambos se convierten implícitamente a DOUBLE, lo cual puede provocar pérdida de precisión. Use CAST(string_value AS BIGINT) para convertir primero el valor STRING a BIGINT.

Operadores de cadena

Operador

Descripción

`A

B`

Concatena las cadenas A y B. Por ejemplo, `a

b

c` equivale a CONCAT(a, b, c).

Ejemplo

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

Operadores aritméticos

Los operadores aritméticos ejecutan cálculos matemáticos sobre valores numéricos.

Operador

Descripción

A+B

Devuelve la suma de A y B. Devuelve NULL si A o B es NULL.

A-B

Devuelve la diferencia de A menos B. Devuelve NULL si A o B es NULL.

A*B

Devuelve el producto de A multiplicado por B. Devuelve NULL si A o B es NULL.

A/B

Devuelve el cociente de A dividido entre B. Devuelve NULL si A o B es NULL. Si tanto A como B son de tipo BIGINT, el resultado es de tipo DOUBLE.

A%B

Devuelve el residuo de A dividido entre B. Devuelve NULL si A o B es NULL.

+A

Devuelve A (signo positivo unario).

-A

Devuelve la negación de A. Devuelve NULL si A es NULL.

A DIV B

Ejecuta la división entera de A entre B y descarta la parte fraccionaria. Devuelve NULL si A o B es NULL.

Ejemplo

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

Reglas de tipos de datos

  • Solo los operandos STRING, BIGINT, DOUBLE y TIMESTAMP_NTZ admiten operaciones aritméticas. Los valores de fecha y BOOLEAN no son compatibles. MaxCompute TIMESTAMP_NTZ data types.

  • Los operandos STRING se convierten implícitamente a DOUBLE antes del cálculo.

  • Cuando se combinan operandos BIGINT y DOUBLE, el valor BIGINT se convierte implícitamente a DOUBLE y el resultado es DOUBLE.

  • Si tanto A como B son BIGINT, A / B devuelve DOUBLE. Todas las demás operaciones aritméticas entre dos operandos BIGINT devuelven BIGINT.

Operadores bit a bit

Los operadores bit a bit trabajan sobre la representación binaria de números enteros. Ambos operandos deben ser BIGINT. No se aplican conversiones de tipo implícitas.

Operador

Sintaxis

Descripción

& / BITAND

A & B o BITAND(A, B)

Devuelve la operación AND bit a bit de A y B. Por ejemplo, 1 & 2 devuelve 0, y BITAND(1, 3) devuelve 1. Devuelve NULL si A o B es NULL.

`

` / BITOR

`A

B` o BITOR(A, B)

Devuelve la operación OR bit a bit de A y B. Por ejemplo, `1

2` devuelve 3, y BITOR(1, 3) devuelve 3. Devuelve NULL si A o B es NULL.

~ / BITNOT

~A o BITNOT(A)

Devuelve la operación NOT bit a bit de A. Por ejemplo, ~1 devuelve -2, y BITNOT(7) devuelve -8. Devuelve NULL si A es NULL.

^ / BITXOR

A ^ B o BITXOR(A, B)

Devuelve la operación XOR bit a bit de A y B. Por ejemplo, 1 ^ 2 devuelve 3, y BITXOR(4, 5) devuelve 1. Devuelve NULL si A o B es NULL.

Operadores lógicos

Los operadores lógicos combinan expresiones BOOLEAN. Solo se admiten operandos BOOLEAN; no se aplican conversiones de tipo implícitas.

A continuación se muestran las tablas de verdad con los resultados para todas las combinaciones de TRUE, FALSE y 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

Precedencia de operadores

Cuando una expresión contiene varios operadores, MaxCompute los evalúa en el orden que se muestra a continuación. Los números más bajos indican mayor precedencia. Los operadores del mismo nivel se evalúan de izquierda a derecha.

Precedencia

Operadores

1 (la más alta)

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 más baja)

OR

Use paréntesis para modificar la precedencia predeterminada. Por ejemplo:

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.