

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Operadores
<a name="iot-sql-operators"></a>

Los operadores siguientes se pueden utilizar en las cláusulas SELECT y WHERE. 

## Operador AND
<a name="iot-sql-operators-and"></a>

Devuelve un resultado `Boolean`. Realiza una operación AND lógica. Devuelve el valor true si los operandos izquierdo y derecho son true. De lo contrario, devuelve el valor false. Se necesitan operandos de tipo `Boolean` u operandos de cadena "true" o "false" que no distingan entre mayúsculas y minúsculas.

*Sintaxis:* ` expression AND expression`.


**Operador AND**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Boolean | Boolean | Boolean. True si ambos operandos son true. De lo contrario, devuelve false. | 
| String/Boolean | String/Boolean | Si todas las cadenas son "true" o "false" (no se distingue entre mayúsculas y minúsculas), se convierten en valores de tipo Boolean y se procesan normalmente como boolean AND boolean. | 
| Otro valor | Otro valor | Undefined. | 

## Operador OR
<a name="iot-sql-operators-or"></a>

Devuelve un resultado `Boolean`. Realiza una operación OR lógica. Devuelve el valor true si el operando izquierdo o el operando derecho es true. De lo contrario, devuelve el valor false. Se necesitan operandos de tipo `Boolean` u operandos de cadena "true" o "false" que no distingan entre mayúsculas y minúsculas.

*Sintaxis:* ` expression OR expression`.


**Operador OR**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Boolean | Boolean | Boolean. True si uno de los operandos es true. De lo contrario, devuelve false. | 
| String/Boolean | String/Boolean | Si todas las cadenas son "true" o "false" (no se distingue entre mayúsculas y minúsculas), se convierten en valores booleanos y se procesan normalmente como boolean OR boolean. | 
| Otro valor | Otro valor | Undefined. | 

## Operador NOT
<a name="iot-sql-operators-not"></a>

Devuelve un resultado `Boolean`. Realiza una operación NOT lógica. Devuelve true si el operado es false. De lo contrario, devuelve true. Se necesita un operando `Boolean` o un operando de cadena "true" o "false" que no distinga entre mayúsculas y minúsculas.

*Sintaxis:* `NOT expression`.


**Operador NOT**  

| Operando | Output | 
| --- | --- | 
| Boolean | Boolean. True si el operando es false. De lo contrario, devuelve true. | 
| String | Si la cadena es “true” o “false” (no distingue entre mayúsculas y minúsculas), se convierte en el valor booleano correspondiente y se devuelve el valor opuesto. | 
| Otro valor | Undefined. | 

## Operador IN
<a name="iot-sql-operators-in"></a>

Devuelve un resultado `Boolean`. Puede usar el operador IN en una cláusula WHERE para comprobar si un valor coincide con algún valor de una matriz. Devuelve true si hay coincidencia y false en caso contrario.

*Sintaxis:* ` expression IN expression`.


**Operador IN**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int/Decimal/String/Array/Object | Array | Verdadero si el elemento Integer/Decimal/String/Array/Object está en la raíz. De lo contrario, devuelve false. | 

*Ejemplo:*

```
SQL: "select * from 'a/b' where 3 in arr"

JSON: {"arr":[1, 2, 3, "three", 5.7, null]}
```

En este ejemplo, la cláusula de condición `where 3 in arr` se evaluará como verdadera porque el número 3 está presente en la matriz denominada `arr`. Por lo tanto, en la instrucción SQL, se ejecutará `select * from 'a/b'`. Este ejemplo también muestra que la matriz puede ser heterogénea.

## Operador EXISTS
<a name="iot-sql-operators-exists"></a>

Devuelve un resultado `Boolean`. Puede usar el operador EXISTS en una cláusula condicional para comprobar la existencia de elementos en una subconsulta. Devuelve verdadero si la subconsulta devuelve uno o más elementos y falso si no devuelve ningún elemento. 

*Sintaxis:* ` expression`.

*Ejemplo:*

```
SQL: "select * from 'a/b' where exists (select * from arr as a where a = 3)"

JSON: {"arr":[1, 2, 3]}
```

En este ejemplo, la cláusula de condición `where exists (select * from arr as a where a = 3)` se evaluará como verdadera porque el número 3 está presente en la matriz denominada `arr`. Por lo tanto, en la instrucción SQL, se ejecutará `select * from 'a/b'`.

*Ejemplo:*

```
SQL: select * from 'a/b' where exists (select * from e as e where foo = 2)

JSON: {"foo":4,"bar":5,"e":[{"foo":1},{"foo":2}]}
```

En este ejemplo, la cláusula de condición `where exists (select * from e as e where foo = 2)` se evaluará como verdadera porque la matriz `e` del objeto JSON contiene el objeto `{"foo":2}`. Por lo tanto, en la instrucción SQL, se ejecutará `select * from 'a/b'`.

## > operador
<a name="iot-sql-operators-greater"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si el operando izquierdo es superior al operando derecho. Los dos operandos se convierten en un valor `Decimal` y, a continuación, se comparan. 

*Sintaxis:* `expression > expression`.


**> operador**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Devuelve el valor true si el operando izquierdo es superior al operando derecho. De lo contrario, devuelve false. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se pueden convertir en un valor Decimal y, a continuación, en un valor Boolean. Devuelve el valor true si el operando izquierdo es superior al operando derecho. De lo contrario, devuelve false. | 
| Otro valor | Undefined. | Undefined. | 

## >= operador
<a name="iot-sql-operators-greater-equal"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si el operando izquierdo es superior o igual al operando derecho. Los dos operandos se convierten en un valor `Decimal` y, a continuación, se comparan. 

*Sintaxis:* `expression >= expression`.


**>= operador**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Devuelve el valor true si el operando izquierdo es superior o igual al operando derecho. De lo contrario, devuelve false. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se pueden convertir en un valor Decimal y, a continuación, en un valor Boolean. Devuelve el valor true si el operando izquierdo es superior o igual al operando derecho. De lo contrario, devuelve false. | 
| Otro valor | Undefined. | Undefined. | 

## Operador <
<a name="iot-sql-operators-less"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si el operando izquierdo es inferior al operando derecho. Los dos operandos se convierten en un valor `Decimal` y, a continuación, se comparan. 

*Sintaxis:* `expression < expression`.


**Operador <**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Devuelve el valor true si el operando izquierdo es inferior al operando derecho. De lo contrario, devuelve false. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se pueden convertir en un valor Decimal y, a continuación, en un valor Boolean. Devuelve el valor true si el operando izquierdo es inferior al operando derecho. De lo contrario, devuelve false. | 
| Otro valor | Undefined | Undefined | 

## Operador <=
<a name="iot-sql-operators-less-equal"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si el operando izquierdo es inferior o igual al operando derecho. Los dos operandos se convierten en un valor `Decimal` y, a continuación, se comparan. 

*Sintaxis:* `expression <= expression`.


**Operador <=**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Devuelve el valor true si el operando izquierdo es inferior o igual al operando derecho. De lo contrario, devuelve false. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se pueden convertir en un valor Decimal y, a continuación, en un valor Boolean. Devuelve el valor true si el operando izquierdo es inferior o igual al operando derecho. De lo contrario, devuelve false. | 
| Otro valor | Undefined | Undefined | 

## Operador <>
<a name="iot-sql-operators-not-eq"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si los operandos izquierdo y derecho no son iguales. De lo contrario, devuelve el valor false. 

*Sintaxis:* ` expression <> expression`.


**Operador <>**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | True si el operando izquierdo no es igual al operando derecho. De lo contrario, devuelve false. | 
| Decimal | Decimal | True si el operando izquierdo no es igual al operando derecho. De lo contrario, devuelve false. Int se convierte en un valor Decimal antes de la comparación. | 
| String | String | True si el operando izquierdo no es igual al operando derecho. De lo contrario, devuelve false. | 
| Matriz | Matriz | True si los elementos de cada operando no son iguales y no están en el mismo orden. De lo contrario, devuelve false. | 
| Objeto | Objeto | True si las claves y los valores de cada operando no son iguales. De lo contrario, devuelve false. El orden de no keys/values es importante. | 
| Nulo | Nulo | False. | 
| Cualquier valor | Undefined | Sin definir. | 
| Undefined | Cualquier valor | Sin definir. | 
| Tipo no coincidente | Tipo no coincidente | True. | 

## Operador =
<a name="iot-sql-operators-eq"></a>

Devuelve un resultado `Boolean`. Devuelve el valor true si los operandos izquierdo y derecho son iguales. De lo contrario, devuelve el valor false. 

*Sintaxis:* ` expression = expression`.


**Operador =**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | True si el operando izquierdo es igual al operando derecho. De lo contrario, devuelve false. | 
| Decimal | Decimal | True si el operando izquierdo es igual al operando derecho. De lo contrario, devuelve false. Int se convierte en un valor Decimal antes de la comparación. | 
| String | String | True si el operando izquierdo es igual al operando derecho. De lo contrario, devuelve false. | 
| Matriz | Matriz | True si los elementos de cada operando son iguales y están en el mismo orden. De lo contrario, devuelve false. | 
| Objeto | Objeto | True si las claves y los valores de cada operando son iguales. De lo contrario, devuelve false. El orden de no keys/values es importante. | 
| Cualquier valor | Undefined | Undefined. | 
| Undefined | Cualquier valor | Undefined. | 
| Tipo no coincidente | Tipo no coincidente | False. | 

## Operador \$1
<a name="iot-sql-operators-plus"></a>

El símbolo "\$1" es un operador sobrecargado. Se puede utilizar para la concatenación o la adición de cadenas. 

*Sintaxis:* ` expression + expression`.


**Operador \$1**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| String | Cualquier valor | Convierte el operando derecho en una cadena que concatena al final del operando izquierdo. | 
| Cualquier valor | String | Convierte el operando izquierdo en una cadena y concatena el operando derecho al final del operando izquierdo convertido. | 
| Int | Int | valor de Int. Agrega ambos operandos. | 
| Int/Decimal | Int/Decimal | valor de Decimal. Agrega ambos operandos. | 
| Otro valor | Otro valor | Undefined. | 

## Operador -
<a name="iot-sql-operators-sub"></a>

Resta el operando derecho del operando izquierdo. 

*Sintaxis:* ` expression - expression`.


**Operador -**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | valor de Int. Resta el operando derecho del operando izquierdo. | 
| Int/Decimal | Int/Decimal | valor de Decimal. Resta el operando derecho del operando izquierdo. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se convierten en decimales correctamente, se devuelve un valor Decimal. Resta el operando derecho del operando izquierdo. De lo contrario, devuelve Undefined. | 
| Otro valor | Otro valor | Undefined. | 
| Otro valor | Otro valor | Undefined. | 

## Operador \$1
<a name="iot-sql-operators-mult"></a>

Multiplica el operando izquierdo por el operando derecho. 

*Sintaxis:* ` expression * expression`.


**Operador \$1**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | valor de Int. Multiplica el operando izquierdo por el operando derecho. | 
| Int/Decimal | Int/Decimal | valor de Decimal. Multiplica el operando izquierdo por el operando derecho. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se convierten en decimales correctamente, se devuelve un valor Decimal. Multiplica el operando izquierdo por el operando derecho. De lo contrario, devuelve Undefined. | 
| Otro valor | Otro valor | Undefined. | 

## Operador /
<a name="iot-sql-operators-div"></a>

Divide el operando izquierdo por el operando derecho. 

*Sintaxis:* ` expression / expression`.


**Operador /**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | valor de Int. Divide el operando izquierdo por el operando derecho. | 
| Int/Decimal | Int/Decimal | valor de Decimal. Divide el operando izquierdo por el operando derecho. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se convierten en decimales correctamente, se devuelve un valor Decimal. Divide el operando izquierdo por el operando derecho. De lo contrario, devuelve Undefined. | 
| Otro valor | Otro valor | Undefined. | 

## Operador %
<a name="iot-sql-operators-mod"></a>

Devuelve el resto de la división del operando izquierdo por el operando derecho. 

*Sintaxis:* ` expression % expression`.


**Operador %**  

| Operando izquierdo | Operando derecho | Output | 
| --- | --- | --- | 
| Int | Int | valor de Int. Devuelve el resto de la división del operando izquierdo por el operando derecho. | 
| String/Int/Decimal | String/Int/Decimal | Si todas las cadenas se convierten en decimales correctamente, se devuelve un valor Decimal. Devuelve el resto de la división del operando izquierdo por el operando derecho. De lo contrario, Undefined. | 
| Otro valor | Otro valor | Undefined. | 