

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Os operadores a seguir podem ser usados nas cláusulas SELECT e WHERE. 

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

Gera um resultado `Boolean`. Realiza uma operação E lógica. Retornará verdadeiro se os operandos esquerdo e direito forem verdadeiros. Caso contrário, retorna false. Os operandos `Boolean` ou operandos de string "true" ou "false" que não diferenciam letras maiúsculas de minúsculas são necessários.

*Sintaxe:* ` expression AND expression`.


**Operador AND**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Boolean | Boolean | Boolean. Verdadeiro se ambos os operandos forem verdadeiros. Caso contrário, falso. | 
| String/Boolean | String/Boolean | Se todas as strings forem "true" ou "false" (não diferencia letras maiúsculas de minúsculas), elas serão convertidas em Boolean e processadas normalmente como boolean AND boolean. | 
| Outros valores | Outros valores | Undefined. | 

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

Gera um resultado `Boolean`. Executa uma operação OU lógica. Retornará verdadeiro se um dos operandos esquerdo ou direito for verdadeiro. Caso contrário, retorna false. Os operandos `Boolean` ou operandos de string "true" ou "false" que não diferenciam letras maiúsculas de minúsculas são necessários.

*Sintaxe:* ` expression OR expression`.


**Operador OU**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Boolean | Boolean | Boolean. Verdadeiro se um dos operandos for verdadeiro. Caso contrário, falso. | 
| String/Boolean | String/Boolean | Se todas as strings forem "true" ou "false" (não diferencia letras maiúsculas de minúsculas), elas serão convertidas em booleanos e processadas normalmente como boolean OR boolean. | 
| Outros valores | Outros valores | Undefined. | 

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

Gera um resultado `Boolean`. Realiza uma operação NÃO lógica. Retornará verdadeiro se o operando for falso. Caso contrário, retornará verdadeiro. Um operando `Boolean` ou operando de string "true" ou "false" que não diferencia letras maiúsculas de minúsculas é necessário.

*Sintaxe:* `NOT expression`.


**Operador NOT**  

| Operando | Output | 
| --- | --- | 
| Boolean | Boolean. Verdadeiro se o operando for falso. Caso contrário, verdadeiro. | 
| String | Se a string for "true" ou "false" (não diferencia letras maiúsculas de minúsculas), ela será convertida no valor booliano correspondente, e o valor oposto será gerado. | 
| Outros valores | Undefined. | 

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

Gera um resultado `Boolean`. Você pode usar o operador IN em uma cláusula WHERE para verificar se um valor corresponde a algum valor em uma matriz. Ele retornará verdadeiro se a correspondência for encontrada; caso contrário, retornará falso.

*Sintaxe:* ` expression IN expression`.


**Operador IN**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int/Decimal/String/Array/Object | Array | Verdadeiro se o elemento Integer/Decimal/String/Array/Object for encontrado na matriz. Caso contrário, falso. | 

*Exemplo:*

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

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

Neste exemplo, a cláusula de condição `where 3 in arr` será avaliada como verdadeira porque 3 está presente na matriz chamada `arr`. Portanto, na instrução SQL, `select * from 'a/b'` será executado. Esse exemplo também mostra que a matriz pode ser heterogênea.

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

Gera um resultado `Boolean`. Você poderá usar o operador EXISTS em uma cláusula condicional para testar a existência de elementos em uma subconsulta. Ele retornará verdadeiro se a subconsulta retornar um ou mais elementos e falso se a subconsulta não retornar nenhum elemento. 

*Sintaxe:* ` expression`.

*Exemplo:*

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

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

Neste exemplo, a cláusula de condição `where exists (select * from arr as a where a = 3)` será avaliada como verdadeira porque 3 está presente na matriz chamada `arr`. Portanto, na instrução SQL, `select * from 'a/b'` será executado.

*Exemplo:*

```
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}]}
```

Neste exemplo, a cláusula de condição `where exists (select * from e as e where foo = 2)` será avaliada como verdadeira porque a matriz `e` dentro do objeto JSON contém o objeto `{"foo":2}`. Portanto, na instrução SQL, `select * from 'a/b'` será executado.

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

Gera um resultado `Boolean`. Verdadeiro se o operando esquerdo for superior ao operando direito. Os dois operandos são convertidos em um `Decimal` e depois comparados. 

*Sintaxe:* `expression > expression`.


**> operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Verdadeiro se o operando esquerdo for superior ao operando direito. Caso contrário, falso. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings puderem ser convertidas em Decimal, então Boolean. Verdadeiro se o operando esquerdo for superior ao operando direito. Caso contrário, falso. | 
| Outros valores | Undefined. | Undefined. | 

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

Gera um resultado `Boolean`. Verdadeiro se o operando esquerdo for superior ou igual ao operando direito. Os dois operandos são convertidos em um `Decimal` e depois comparados. 

*Sintaxe:* `expression >= expression`.


**>= operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Verdadeiro se o operando esquerdo for igual ou superior ao operando direito. Caso contrário, falso. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings puderem ser convertidas em Decimal, então Boolean. Verdadeiro se o operando esquerdo for superior ou igual ao operando direito. Caso contrário, falso. | 
| Outros valores | Undefined. | Undefined. | 

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

Gera um resultado `Boolean`. Verdadeiro se o operando esquerdo for inferior ao operando direito. Os dois operandos são convertidos em um `Decimal` e depois comparados. 

*Sintaxe:* `expression < expression`.


**< operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Verdadeiro se o operando esquerdo for inferior ao operando direito. Caso contrário, falso. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings puderem ser convertidas em Decimal, então Boolean. Verdadeiro se o operando esquerdo for inferior ao operando direito. Caso contrário, falso. | 
| Outros valores | Undefined | Undefined | 

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

Gera um resultado `Boolean`. Verdadeiro se o operando esquerdo for inferior ou igual ao operando direito. Os dois operandos são convertidos em um `Decimal` e depois comparados. 

*Syntaxe:* `expression <= expression`.


**<= operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int/Decimal | Int/Decimal | Boolean. Verdadeiro se o operando esquerdo for igual ou inferior ao operando direito. Caso contrário, falso. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings puderem ser convertidas em Decimal, então Boolean. Verdadeiro se o operando esquerdo for inferior ou igual ao operando direito. Caso contrário, falso. | 
| Outros valores | Undefined | Undefined | 

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

Gera um resultado `Boolean`. Retornará verdadeiro se os operandos esquerdo e direito forem diferentes. Caso contrário, retornará falso. 

*Sintaxe:* ` expression <> expression`.


**<> operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Verdadeiro se o operando esquerdo não for igual ao operando direito. Caso contrário, falso. | 
| Decimal | Decimal | Verdadeiro se o operando esquerdo não for igual ao operando direito. Caso contrário, falso. Int é convertido em Decimal antes de ser comparado. | 
| String | String | Verdadeiro se o operando esquerdo não for igual ao operando direito. Caso contrário, falso. | 
| Array | Array | Verdadeiro se os itens em cada operando não forem iguais e não estiverem na mesma ordem. Caso contrário, falso | 
| Objeto | Objeto | Verdadeiro se as chaves e os valores de cada operando não forem iguais. Caso contrário, falso. A ordem de não keys/values é importante. | 
| Null | Null | Falso. | 
| Qualquer valor | Undefined | Indefinido. | 
| Undefined | Qualquer valor | Indefinido. | 
| Tipo não correspondente | Tipo não correspondente | Verdadeiro. | 

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

Gera um resultado `Boolean`. Retornará verdadeiro se os operandos esquerdo e direito forem iguais. Caso contrário, retornará falso. 

*Sintaxe:* ` expression = expression`.


**= operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Verdadeiro se o operando esquerdo for igual ao operando direito. Caso contrário, falso. | 
| Decimal | Decimal | Verdadeiro se o operando esquerdo for igual ao operando direito. Caso contrário, falso. Int é convertido em Decimal antes de ser comparado. | 
| String | String | Verdadeiro se o operando esquerdo for igual ao operando direito. Caso contrário, falso. | 
| Array | Array | Verdadeiro se os itens em cada operando forem iguais e estiverem na mesma ordem. Caso contrário, falso. | 
| Objeto | Objeto | Verdadeiro se as chaves e os valores de cada operando forem iguais. Caso contrário, falso. A ordem de não keys/values é importante. | 
| Qualquer valor | Undefined | Undefined. | 
| Undefined | Qualquer valor | Undefined. | 
| Tipo não correspondente | Tipo não correspondente | Falso. | 

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

" \$1" é um operador sobrecarregado. Ele pode ser usado para concatenação ou adição de string. 

*Sintaxe:* ` expression + expression`.


**\$1 operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| String | Qualquer valor | Converte o operando direito em uma string e concatena-o ao final do operando esquerdo. | 
| Qualquer valor | String | Converte o operando esquerdo em uma string e concatena o operando direito ao final do operando esquerdo convertido. | 
| Int | Int | Int value. Adiciona operandos juntos. | 
| Int/Decimal | Int/Decimal | Decimal value. Adiciona operandos juntos. | 
| Outros valores | Outros valores | Undefined. | 

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

Subtrai o operando direito do operando esquerdo. 

*Sintaxe:* ` expression - expression`.


**- operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Int value. Subtrai o operando direito do operando esquerdo. | 
| Int/Decimal | Int/Decimal | Decimal value. Subtrai o operando direito do operando esquerdo. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings forem convertidas em decimais corretamente, um valor Decimal será gerado. Subtrai o operando direito do operando esquerdo. Caso contrário, gera Undefined. | 
| Outros valores | Outros valores | Undefined. | 
| Outros valores | Outros valores | Undefined. | 

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

Multiplica o operando esquerdo pelo operando direito. 

*Sintaxe:* ` expression * expression`.


**\$1 operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Int value. Multiplica o operando esquerdo pelo operando direito. | 
| Int/Decimal | Int/Decimal | Decimal value. Multiplica o operando esquerdo pelo operando direito. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings forem convertidas em decimais corretamente, um valor Decimal será gerado. Multiplica o operando esquerdo pelo operando direito. Caso contrário, gera Undefined. | 
| Outros valores | Outros valores | Undefined. | 

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

Divide o operando esquerdo pelo operando direito. 

*Sintaxe:* ` expression / expression`.


**/ operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Int value. Divide o operando esquerdo pelo operando direito. | 
| Int/Decimal | Int/Decimal | Decimal value. Divide o operando esquerdo pelo operando direito. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings forem convertidas em decimais corretamente, um valor Decimal será gerado. Divide o operando esquerdo pelo operando direito. Caso contrário, gera Undefined. | 
| Outros valores | Outros valores | Undefined. | 

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

Gera o restante da divisão do operando esquerdo pelo operando direito. 

*Sintaxe:* ` expression % expression`.


**% operador**  

| Operando esquerdo | Operando direito | Output | 
| --- | --- | --- | 
| Int | Int | Int value. Gera o restante da divisão do operando esquerdo pelo operando direito. | 
| String/Int/Decimal | String/Int/Decimal | Se todas as strings forem convertidas em decimais corretamente, um valor Decimal será gerado. Gera o restante da divisão do operando esquerdo pelo operando direito. Caso contrário, Undefined. | 
| Outros valores | Outros valores | Undefined. | 