Operadores

Los operadores se representan mediante caracteres especiales o palabras clave; no se usa la sintaxis de llamada a funciones. Un operador manipula cualquier cantidad de entradas de datos, también llamados operandos, y muestra un resultado.

Convenciones comunes:

  • A menos que se especifique lo contrario, todos los operadores muestran NULL cuando uno de los operandos es NULL.
  • Todos los operadores mostrarán un error si el cálculo arroja demasiados resultados.
  • Para todas las operaciones de punto flotante, +/-inf y NaN solo se pueden mostrar si uno de los operandos es +/-inf o NaN. En otros casos, se muestra un error.

Prioridad del operador

En la siguiente tabla, se enumeran todos los operadores de BigQuery desde la prioridad más alta a la más baja, es decir, en el orden en que se evaluarán en una declaración.

Orden de prioridad Operador Tipos de datos de entrada Nombre Aridad del operador
1 Operador de acceso de campos STRUCT
Operador de acceso de campos Binario
  Operador subíndice de array ARRAY Posición del arreglo. Se debe usar con OFFSET o con ORDINAL; consulta Funciones de array. Binario
2 + Todos los tipos numéricos Más unario Unario
  - Todos los tipos numéricos Menos unario Unario
  ~ Número entero o BYTES NOT a nivel de bits Unario
3 * Todos los tipos numéricos Multiplicación Binario
  / Todos los tipos numéricos División Binario
  || STRING, BYTES o ARRAY <T> Operador de concatenación Binario
4 + Todos los tipos numéricos, DATE con INT64, INTERVAL Suma Binario
  - Todos los tipos numéricos, DATE con INT64, INTERVAL Resta Binario
5 << Número entero o BYTES Desplazamiento de bits a la izquierda Binario
  >> Número entero o BYTES Desplazamiento de bits a la derecha Binario
6 & Número entero o BYTES AND a nivel de bits Binario
7 ^ Número entero o BYTES XOR a nivel de bits Binario
8 | Número entero o BYTES OR a nivel de bits Binario
9 (Operadores de comparación) = Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. Igual Binario
  < Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. Menor que Binario
  > Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. Mayor que Binario
  <= Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. Menor o igual que Binario
  >= Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. Mayor o igual que Binario
  !=, <> Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. No igual Binario
  [NOT] LIKE STRING y byte El valor [no] coincide con el patrón especificado Binario
  [NOT] BETWEEN Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. El valor [no] está dentro del rango especificado Binario
  [NOT] IN Cualquier tipo comparable. Consulta Tipos de datos para ver una lista completa. El valor [no] está en el conjunto de valores especificado Binario
  IS [NOT] NULL Todos El valor [no] es NULL Unario
  IS [NOT] TRUE BOOL El valor [no] es VERDADERO Unario
  IS [NOT] FALSE BOOL El valor [no] es FALSO Unario
10 NOT BOOL NOT lógico Unario
11 AND BOOL AND lógico Binario
12 OR BOOL OR lógico Binario

Los operadores con la misma prioridad son asociativos a la izquierda. Esto significa que esos operadores se agrupan juntos de izquierda a derecha. Por ejemplo, la expresión:

x AND y AND z

se interpreta como

( ( x AND y ) AND z )

La expresión:

x * y / z

se interpreta como:

( ( x * y ) / z )

Todos los operadores de comparación tienen la misma prioridad, pero no son asociativos. Por lo tanto, se requieren paréntesis para resolver la ambigüedad. Por ejemplo:

(x < y) IS FALSE

Operador de acceso de campos

expression.fieldname[. ...]

Descripción

Obtiene el valor de un campo. También se conoce como el operador de punto. Se puede usar para acceder a campos anidados. Por ejemplo, expression.fieldname1.fieldname2.

Tipos de entrada

  • STRUCT

Tipo de datos que se muestra

  • Para STRUCT: El tipo de datos de SQL de fieldname. Si no se encuentra un campo en el struct, se genera un error.

Ejemplo

En el siguiente ejemplo, la expresión es t.customer y las operaciones de acceso de campo son .address y .country. Una operación es una aplicación de un operador (. ) a operandos específicos (en este caso,address ycountry o, más específicamente,t.customer yaddress , para la primera operaciónt.customer.address ycountry por la segunda operación).

WITH orders AS (
  SELECT STRUCT(STRUCT('Yonge Street' AS street, 'Canada' AS country) AS address) AS customer
)
SELECT t.customer.address.country FROM orders AS t;

+---------+
| country |
+---------+
| Canada  |
+---------+

Operador subíndice de array

array_expression[array_subscript_specifier]

array_subscript_specifier:
  position_keyword(index)

position_keyword:
  { OFFSET | SAFE_OFFSET | ORDINAL | SAFE_ORDINAL }

Descripción

Obtiene un valor de un arreglo en una ubicación específica.

Tipos de entrada

  • array_expression: El arreglo de entrada
  • position_keyword: El lugar donde se debe iniciar el índice para el arreglo y cómo se manejan los índices fuera de rango. Las opciones son:
    • OFFSET: El índice comienza en cero. Se produce un error si el índice está fuera de rango.
    • SAFE_OFFSET: El índice comienza en cero. Muestra NULL si el índice está fuera de rango.
    • ORDINAL: El índice comienza en uno. Se produce un error si el índice está fuera de rango.
    • SAFE_ORDINAL: El índice comienza en uno. Muestra NULL si el índice está fuera de rango.
  • index: un número entero que representa una posición específica en el arreglo.

Tipo de datos que se muestra

En el ejemplo anterior, Ten el que array_expression es ARRAY<T>:

Ejemplos

En este ejemplo, el operador de subíndice del arreglo se usa para mostrar valores en ubicaciones específicas en item_array. En este ejemplo, también se muestra lo que sucede cuando haces referencia a un índice (6) en un arreglo que está fuera de rango. Si se incluye el prefijo SAFE, se muestra NULL; de lo contrario, se genera un error.

WITH Items AS (SELECT ["coffee", "tea", "milk"] AS item_array)
SELECT
  item_array,
  item_array[OFFSET(1)] AS item_offset,
  item_array[ORDINAL(1)] AS item_ordinal,
  item_array[SAFE_OFFSET(6)] AS item_safe_offset,
FROM Items

+----------------------------------+--------------+--------------+------------------+
| item_array                       | item_offset  | item_ordinal | item_safe_offset |
+----------------------------------+--------------+--------------+------------------+
| [coffee, tea, milk]              | tea          | coffee       | NULL             |
+----------------------------------+--------------+--------------+------------------+

En el siguiente ejemplo, cuando se hace referencia a un índice en un arreglo que está fuera de rango y no se incluye el prefijo SAFE, se produce un error.

WITH Items AS (SELECT ["coffee", "tea", "milk"] AS item_array)
SELECT
  item_array[OFFSET(6)] AS item_offset
FROM Items

-- Error. OFFSET(6) is out of range.

Operadores aritméticos

Todos los operadores aritméticos aceptan la entrada del tipo numérico T, y el tipo de resultado tiene el tipo T, a menos que se indique lo contrario en la siguiente descripción:

Nombre Sintaxis
Suma X + Y
Resta X - Y
Multiplicación X * Y
División X / Y
Más unario + X
Menos unario - X

NOTA: Las operaciones de dividir por cero muestran un error. Para que se muestre un resultado diferente considera usar las funciones IEEE_DIVIDE o SAFE_DIVIDE.

Tipos de resultados para suma, resta y multiplicación:

INPUTINT64NUMERICBIGNUMERICFLOAT64
INT64INT64NUMERICBIGNUMERICFLOAT64
NUMERICNUMERICNUMERICBIGNUMERICFLOAT64
BIGNUMERICBIGNUMERICBIGNUMERICBIGNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64FLOAT64

Tipos de resultados para división:

INPUTINT64NUMERICBIGNUMERICFLOAT64
INT64FLOAT64NUMERICBIGNUMERICFLOAT64
NUMERICNUMERICNUMERICBIGNUMERICFLOAT64
BIGNUMERICBIGNUMERICBIGNUMERICBIGNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64FLOAT64

Tipos de resultados para Unary Plus:

INPUTINT64NUMERICBIGNUMERICFLOAT64
OUTPUTINT64NUMERICBIGNUMERICFLOAT64

Tipos de resultados para menos unario:

INPUTINT64NUMERICBIGNUMERICFLOAT64
OUTPUTINT64NUMERICBIGNUMERICFLOAT64

Operadores aritméticos de fecha

Los operadores “+” y “-” se pueden usar para las operaciones aritméticas con fechas.

date_expression + int64_expression
int64_expression + date_expression
date_expression - int64_expression

Descripción

Agrega días int64_expression a date_expression o se los resta. Esto es equivalente a las funciones DATE_ADD o DATE_SUB, cuando el intervalo se expresa en días.

Tipo de datos mostrados

DATE

Ejemplo

SELECT DATE "2020-09-22" + 1 AS day_later, DATE "2020-09-22" - 7 AS week_ago

+------------+------------+
| day_later  | week_ago   |
+------------+------------+
| 2020-09-23 | 2020-09-15 |
+------------+------------+

Resta de fecha y hora

date_expression - date_expression
timestamp_expression - timestamp_expression
datetime_expression - datetime_expression

Descripción

Calcula la diferencia entre dos valores de fecha y hora como un intervalo.

Tipo de datos mostrados

INTERVAL

Ejemplo

SELECT
  DATE "2021-05-20" - DATE "2020-04-19" AS date_diff,
  TIMESTAMP "2021-06-01 12:34:56.789" - TIMESTAMP "2021-05-31 00:00:00" AS time_diff

+-------------------+------------------------+
| date_diff         | time_diff              |
+-------------------+------------------------+
| 0-0 396 0:0:0     | 0-0 0 36:34:56.789     |
+-------------------+------------------------+

Operadores aritméticos de intervalo

Suma y resta

date_expression + interval_expression = DATETIME
date_expression - interval_expression = DATETIME
timestamp_expression + interval_expression = TIMESTAMP
timestamp_expression - interval_expression = TIMESTAMP
datetime_expression + interval_expression = DATETIME
datetime_expression - interval_expression = DATETIME

Descripción

Agrega un intervalo a un valor de fecha y hora o resta un intervalo de un valor de fecha y hora. Ejemplo

SELECT
  DATE "2021-04-20" + INTERVAL 25 HOUR AS date_plus,
  TIMESTAMP "2021-05-02 00:01:02.345" - INTERVAL 10 SECOND AS time_minus;

+-------------------------+--------------------------------+
| date_plus               | time_minus                     |
+-------------------------+--------------------------------+
| 2021-04-21 01:00:00     | 2021-05-02 00:00:52.345+00     |
+-------------------------+--------------------------------+

Multiplicación y división

interval_expression * integer_expression = INTERVAL
interval_expression / integer_expression = INTERVAL

Descripción

Multiplica o divide un valor de intervalo por un número entero.

Ejemplo

SELECT
  INTERVAL '1:2:3' HOUR TO SECOND * 10 AS mul1,
  INTERVAL 35 SECOND * 4 AS mul2,
  INTERVAL 10 YEAR / 3 AS div1,
  INTERVAL 1 MONTH / 12 AS div2

+----------------+--------------+-------------+--------------+
| mul1           | mul2         | div1        | div2         |
+----------------+--------------+-------------+--------------+
| 0-0 0 10:20:30 | 0-0 0 0:2:20 | 3-4 0 0:0:0 | 0-0 2 12:0:0 |
+----------------+--------------+-------------+--------------+

Operadores a nivel de bits

Todos los operadores a nivel de bits muestran el mismo tipo y la misma longitud que el primer operando.

Nombre Sintaxis Tipo de datos de entrada Descripción
NOT a nivel de bits ~ X Número entero o BYTES Realiza una negación lógica en cada bit y forma el complemento a uno del valor binario dado.
OR a nivel de bits X | Y X: número entero o BYTES
Y: mismo tipo que X
Toma dos patrones de bits de igual longitud y realiza la operación OR inclusiva lógica en cada par de los bits correspondientes. Este operador muestra un error si Y y X son BYTES de diferentes longitudes.
XOR a nivel de bits X ^ Y X: número entero o BYTES
Y: mismo tipo que X
Toma dos patrones de bits de igual longitud y realiza la operación OR exclusiva lógica en cada par de los bits correspondientes. Este operador muestra un error si Y y X son BYTES de diferentes longitudes.
AND a nivel de bits X & Y X: número entero o BYTES
Y: mismo tipo que X
Toma dos patrones de bits de igual longitud y realiza la operación lógica AND en cada par de los bits correspondientes. Este operador muestra un error si Y y X son BYTES de diferentes longitudes.
Desplazamiento a la izquierda X << Y X: Número entero o BYTES
Y: INT64
Desplaza el primer operando X a la izquierda. Este operador muestra 0 o una secuencia de bytes de b'\x00' si el segundo operando Y es igual o mayor que el largo de bits del primer operando X (por ejemplo, 64 si X tiene el tipo INT64). Este operador muestra un error si Y es negativo.
Desplazamiento a la derecha X >> Y X: Número entero o BYTES
Y: INT64
Desplaza el primer operando X a la derecha. Este operador no realiza la extensión de signo con un tipo de signo (es decir, llena los bits vacantes de la izquierda con 0). Este operador muestra 0 o una secuencia de bytes de b'\x00' si el segundo operando Y es igual o mayor que el largo de bits del primer operando X (por ejemplo, 64 si X tiene el tipo INT64). Este operador muestra un error si Y es negativo.

Operadores lógicos

BigQuery es compatible con los operadores lógicos AND, OR y NOT. Los operadores lógicos solo permiten la entrada BOOL o NULL y usan la lógica trivalente para producir un resultado. El resultado puede ser TRUE, FALSE o NULL:

x y x AND y x OR y
VERDADERO VERDADERO VERDADERO VERDADERO
VERDADERO FALSO FALSO VERDADERO
VERDADERO NULL NULL VERDADERO
FALSO VERDADERO FALSO VERDADERO
FALSO FALSO FALSO FALSO
FALSO NULL FALSO NULL
NULL VERDADERO NULL VERDADERO
NULL FALSO FALSO NULL
NULL NULL NULL NULL
x NOT X
VERDADERO FALSO
FALSO VERDADERO
NULL NULL

Ejemplos

En los ejemplos de esta sección, se hace referencia a una tabla llamada entry_table:

+-------+
| entry |
+-------+
| a     |
| b     |
| c     |
| NULL  |
+-------+
SELECT 'a' FROM entry_table WHERE entry = 'a'

-- a => 'a' = 'a' => TRUE
-- b => 'b' = 'a' => FALSE
-- NULL => NULL = 'a' => NULL

+-------+
| entry |
+-------+
| a     |
+-------+
SELECT entry FROM entry_table WHERE NOT (entry = 'a')

-- a => NOT('a' = 'a') => NOT(TRUE) => FALSE
-- b => NOT('b' = 'a') => NOT(FALSE) => TRUE
-- NULL => NOT(NULL = 'a') => NOT(NULL) => NULL

+-------+
| entry |
+-------+
| b     |
| c     |
+-------+
SELECT entry FROM entry_table WHERE entry IS NULL

-- a => 'a' IS NULL => FALSE
-- b => 'b' IS NULL => FALSE
-- NULL => NULL IS NULL => TRUE

+-------+
| entry |
+-------+
| NULL  |
+-------+

Operadores de comparación

Las comparaciones siempre muestran BOOL. Por lo general, las comparaciones requieren que ambos operandos sean del mismo tipo. Si los operandos son de tipos diferentes y si BigQuery puede convertir los valores de esos tipos en un tipo común sin que se pierda la precisión, BigQuery, en general, los coerciona a ese tipo común para la comparación. Con frecuencia, BigQuery coerciona los literales al tipo de los no literales, cuando están presentes. Los tipos de datos comparables se definen en Tipos de datos.

Los STRUCT solo admiten 4 operadores de comparación: igual (=), no igual (!= Y <>) y también IN.

Las siguientes reglas se aplican cuando se comparan estos tipos de datos:

  • FLOAT64: todas las comparaciones con NaN muestran FALSO, excepto != y <>, que muestran VERDADERO.
  • BOOL: FALSO es menor que VERDADERO.
  • STRING: las strings se comparan punto de código por punto de código, lo que significa que solo se garantiza que las strings canónicamente equivalentes se comparen como iguales si se normalizaron primero.
  • NULL: aquí se mantiene la convención; cualquier operación con una entrada NULL mostrará el valor NULL.
Nombre Sintaxis Descripción
Menor que X < Y Muestra TRUE si X es menor que Y.
Menor o igual que X <= Y Muestra TRUE si X es menor o igual que Y.
Mayor que X > Y Muestra TRUE si X es mayor que Y.
Mayor o igual que X >= Y Muestra TRUE si X es mayor o igual que Y.
Igual X = Y Muestra TRUE si X es igual que Y.
No igual X != Y
X <> Y
Muestra TRUE si X no es igual que Y.
BETWEEN X [NOT] BETWEEN Y AND Z

Muestra TRUE si X [no] está dentro del rango especificado. El resultado de "X BETWEEN Y AND Z" es equivalente a "Y <= X AND X <= Z", pero X se evalúa solo una vez en el primer caso.

LIKE X [NOT] LIKE Y Comprueba si la STRING del primer operando X coincide con un patrón especificado por el segundo operando Y. Las expresiones pueden contener estos caracteres:
  • Un signo de porcentaje "%" coincide con cualquier número de caracteres o bytes
  • Un guion bajo "_" coincide con un solo carácter o byte
  • Puedes marcar "\", "_" o "%" con dos barras invertidas. Por ejemplo, "\\%". Si usas strings sin procesar, se requiere una sola barra invertida. Por ejemplo, r"\%".
IN Múltiple: ver a continuación Muestra FALSE si el operando derecho está vacío. Muestra NULL si el operando izquierdo es NULL. Muestra TRUE o NULL, nunca FALSE, si el operando derecho contiene NULL. Los argumentos a ambos lados de IN son expresiones generales. No se requiere que ninguno de los operandos sea literal, aunque lo más común es usar un literal del lado derecho. X se evalúa una sola vez.

Cuando se evalúan valores que tienen un tipo de datos STRUCT para determinar la igualdad, es posible que uno o más campos sea NULL. En esos casos:

  • Si todos los valores que no son NULL son iguales, la comparación muestra NULL.
  • Si el valor de algún campo no NULL no es igual, la comparación muestra FALSE.

En la siguiente tabla, se muestra cómo los tipos de datos STRUCT se comparan cuando tienen campos con valores NULL.

Struct1 Struct2 Struct1 = Struct2
STRUCT(1, NULL) STRUCT(1, NULL) NULL
STRUCT(1, NULL) STRUCT(2, NULL) FALSE
STRUCT(1,2) STRUCT(1, NULL) NULL

Operador IN

El operador IN es compatible con la siguiente sintaxis:

search_value [NOT] IN value_set

value_set:
  {
    (expression[, ...])
    | (subquery)
    | UNNEST(array_expression)
  }

Descripción

Comprueba si hay un valor igual en un conjunto de valores. Se aplican reglas semánticas, pero, por lo general, IN muestra TRUE si se encuentra un valor igual, FALSE si se excluye un valor igual; de lo contrario, NULL, NOT IN muestra FALSE si se encuentra un valor igual, TRUE si se excluye un valor igual; de lo contrario, es NULL.

  • search_value: Es la expresión que se compara con un conjunto de valores.
  • value_set: Representa uno o más valores para comparar con un valor de búsqueda.

    • (expression[, ...]): Es una lista de expresiones.
    • (subquery): Es una subconsulta que muestra una sola columna. Los valores de esa columna son el conjunto de valores. Si no se generan filas, el conjunto de valores está vacío.
    • UNNEST(array_expression): Es un operador UNNEST que muestra una columna de valores de una expresión de array. Esto equivale a lo siguiente:

      IN (SELECT element FROM UNNEST(array_expression) AS element)
      

Reglas semánticas

Cuando se usa el operador IN, se aplica la siguiente semántica en este orden:

  • Muestra FALSE si value_set está vacío.
  • Muestra NULL si search_value es NULL.
  • Muestra TRUE si value_set contiene un valor igual a search_value.
  • Muestra NULL si value_set contiene un NULL.
  • Muestra FALSE.

Cuando se usa el operador NOT IN, se aplica la siguiente semántica en este orden:

  • Muestra TRUE si value_set está vacío.
  • Muestra NULL si search_value es NULL.
  • Muestra FALSE si value_set contiene un valor igual a search_value.
  • Muestra NULL si value_set contiene un NULL.
  • Muestra TRUE.

La semántica de

x IN (y, z, ...)

se define como equivalente a

(x = y) OR (x = z) OR ...

y las formas de subconsulta y arreglo se definen de forma similar.

x NOT IN ...

es equivalente a lo siguiente:

NOT(x IN ...)

El formulario UNNEST trata un análisis de array como UNNEST en la cláusula FROM:

x [NOT] IN UNNEST(<array expression>)

Este formulario se suele usar con parámetros ARRAY. Por ejemplo:

x IN UNNEST(@array_parameter)

Consulta el tema Arrays para obtener información sobre cómo usar esta sintaxis.

IN se puede usar con claves de varias partes mediante la sintaxis del constructor de struct. Por ejemplo:

(Key1, Key2) IN ( (12,34), (56,78) )
(Key1, Key2) IN ( SELECT (table.a, table.b) FROM table )

Consulta Tipo Struct para obtener más información.

Tipo de datos mostrados

BOOL

Ejemplos

Puedes usar estas cláusulas WITH a fin de emular tablas temporales para Words y Items en los siguientes ejemplos:

WITH Words AS (
  SELECT 'Intend' as value UNION ALL
  SELECT 'Secure' UNION ALL
  SELECT 'Clarity' UNION ALL
  SELECT 'Peace' UNION ALL
  SELECT 'Intend'
 )
SELECT * FROM Words;

+----------+
| value    |
+----------+
| Intend   |
| Secure   |
| Clarity  |
| Peace    |
| Intend   |
+----------+
WITH
  Items AS (
    SELECT STRUCT('blue' AS color, 'round' AS shape) AS info UNION ALL
    SELECT STRUCT('blue', 'square') UNION ALL
    SELECT STRUCT('red', 'round')
  )
SELECT * FROM Items;

+----------------------------+
| info                       |
+----------------------------+
| {blue color, round shape}  |
| {blue color, square shape} |
| {red color, round shape}   |
+----------------------------+

Ejemplo con IN y una expresión:

SELECT * FROM Words WHERE value IN ('Intend', 'Secure');

+----------+
| value    |
+----------+
| Intend   |
| Secure   |
| Intend   |
+----------+

Ejemplo con NOT IN y una expresión:

SELECT * FROM Words WHERE value NOT IN ('Intend');

+----------+
| value    |
+----------+
| Secure   |
| Clarity  |
+----------+

Ejemplo con IN, una subconsulta escalar y una expresión:

SELECT * FROM Words WHERE value IN ((SELECT 'Intend'), 'Clarity');

+----------+
| value    |
+----------+
| Intend   |
| Clarity  |
| Intend   |
+----------+

Ejemplo con IN y una operación UNNEST:

SELECT * FROM Words WHERE value IN UNNEST(['Secure', 'Clarity']);

+----------+
| value    |
+----------+
| Secure   |
| Clarity  |
+----------+

Ejemplo con IN y STRUCT:

SELECT
  (SELECT AS STRUCT Items.info) as item
FROM
  Items
WHERE (info.shape, info.color) IN (('round', 'blue'));

+------------------------------------+
| item                               |
+------------------------------------+
| { {blue color, round shape} info } |
+------------------------------------+

Operadores IS

Los operadores IS muestran TRUE o FALSE para la condición que prueban. Nunca muestran NULL, ni siquiera para entradas NULL, a diferencia de la función IS_INF y la función IS_NAN que se definen en Funciones matemáticas. Si NOT está presente, el valor BOOL de salida se invierte.

Sintaxis de la función Tipo de datos de entrada Tipo de datos del resultado Descripción

X IS [NOT] NULL
Cualquier tipo de valor BOOL Muestra TRUE si el operando X se evalúa como NULL; de lo contrario, muestra FALSE.

X IS [NOT] TRUE
BOOL BOOL Muestra TRUE si el operando BOOL se evalúa como TRUE. De lo contrario, muestra FALSE.

X IS [NOT] FALSE
BOOL BOOL Muestra TRUE si el operando BOOL se evalúa como FALSE. De lo contrario, muestra FALSE.

Operador de concatenación

El operador de concatenación combina varios valores en uno.

Sintaxis de la función Tipo de datos de entrada Tipo de datos del resultado

STRING || STRING [ || ... ]
STRING STRING

BYTES || BYTES [ || ... ]
BYTES STRING

ARRAY<T> || ARRAY<T> [ || ... ]
ARRAY<T> ARRAY<T>