Operadores que podem ser usados em expressões
Constantes e variáveis podem ser combinadas por um operador para produzir um resultado que, por sua vez, pode ser usado com outro operador. O tipo de dados resultante ou a expressão deve ser um número inteiro escalar ou valor de vírgula flutuante. Se o resultado for zero, a expressão será considerada como FALSE; caso contrário, ela será TRUE.
Nota: os espaços em branco são opcionais em torno de operadores e operandos, a menos que sua omissão cause uma ambiguidade Uma ambiguidade geralmente ocorre somente com operadores em forma de palavra (ou seja, AND, OR, IN, LIKE, etc.). Com esses operadores, um espaço em branco ou separador, como um parêntese ou colchete, é necessário para distinguir o operador de palavra de um operando. Por exemplo, aANDb é ambíguo. Não está claro se é destinado a ser o nome de variável aANDb ou os nomes de variáveis a, b combinados com o operador AND. Ele é realmente interpretado pelo aplicativo como um único nome de variável aANDb. Com os operadores que não são de palavra (por exemplo, +,-, =, &&, etc.), essa ambiguidade não existe e, portanto, os espaços em branco são opcionais.
A Tabela 1 fornece um resumo do conjunto de operadores que podem ser usados em sequências:
| Operador | Descrição | Tipos de dados à esquerda | Tipos de dados à direita | Exemplo | Notas |
|---|---|---|---|---|---|
| + | Adição | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "1+2" resulta em 3 | Nenhum |
| - | Subtração | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "1.0-2.0" resulta em -1.0 | Nenhum |
| * | Multiplicação | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "2*3" resulta em 6 | Nenhum |
| / | Divisão | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "2/3" resulta em 1 | Nenhum |
| - | Subtração unária | Nenhum | Número inteiro, valor flutuante | "-abc" | Nenhum |
| + | Adição unária | Nenhum | Número inteiro, valor flutuante | "+abc" | Nenhum |
| .. | Intervalo | Números inteiros | Números inteiros | "1..3" resulta em 1,2,3 | Abreviação para todos os números inteiros entre e inclusive os dois valores |
| % | Módulo | Números inteiros | Números inteiros | "10%2" resulta em 0 | Nenhum |
| | | OR bit a bit | Números inteiros | Números inteiros | "2|4" resulta em 6 | Nenhum |
| & | Bit a bit AND | Números inteiros | Números inteiros | "3&2" resulta em 2 | Nenhum |
| ~ | Complemento bit a bit | Nenhum | Números inteiros | ~0x0000ffff resulta em 0xffff0000 | Nenhum |
| ^ | OR exclusivo | Números inteiros | Números inteiros | 0x0000aaaa^0x0000ffff resulta em 0x00005555 | Nenhum |
| >> | Deslocamento à direita | Números inteiros | Números inteiros | 0x0fff>>4 resulta em 0x00ff | Nenhum |
| << | Deslocamento à esquerda | Números inteiros | Números inteiros | "0x0ffff<<4" resulta em 0xffff0 | Nenhum |
==
= |
Igualdade | Todos, exceto SDs | Todos, exceto SDs | "2 == 2" resulta em 1
"2 = 2" resulta em 1 |
O resultado é true (1) ou false (0) |
!=
<> |
Desigualdade | Todos, exceto SDs | Todos, exceto SDs | "2! = 2" resultados em 0
"2 <> 2" resultados em 0 |
O resultado é true (1) ou false (0) |
| > | Maior que | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "2>3" resulta em 0 | O resultado é true (1) ou false (0) |
| >= | Maior que ou igual a | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "4>=3" resulta em 1 | O resultado é true (1) ou false (0) |
| < | Menor que | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "4<3" resulta em 0 | O resultado é true (1) ou false (0) |
| <= | Menor que ou igual a | Número inteiro, valor flutuante | Número inteiro, valor flutuante | "2<=3" resulta em 1 | O resultado é true (1) ou false (0) |
| =~ | Correspondência de padrões | Sequências | Sequências | "abc" =~"a. *" resulta em 1 | O operando à direita é interpretado como uma expressão regular estendida |
| !~ | Sem correspondência de padrões | Sequências | Sequências | "abc"!~"a. *" resulta em 0 | O operando à direita é interpretado como uma expressão regular estendida |
=?
LIKE como |
Correspondência de padrões SQL | Sequências | Sequências | "abc"=? "a%" resulta em 1 | O operando à direita é interpretado como um padrão SQL |
!?
NOT LIKE não curtir |
Sem correspondência de padrões SQL | Sequências | Sequências | "abc"!? "a%" resulta em 0 | O operando à direita é interpretado como um padrão SQL |
| <
IN em |
Contém qualquer | Todos, exceto SDs | Todos, exceto SDs | "{1..5}|<{2,10}" resulta em 1 | O resultado será true (1) se o operando à esquerda contiver qualquer valor do operando à direita |
> <
NOT IN não em |
Contém nenhum | Todos, exceto SDs | Todos, exceto SDs | "{1..5}><{2,10}" resulta em 1 | O resultado será true (1) se o operando à esquerda não contiver nenhum valor do operando à direita |
| &< | Contém todos | Todos, exceto SDs | Todos, exceto SDs | "{1..5}&<{2,10}" resulta em 0 | O resultado será true (1) se o operando à esquerda contiver todos os valores do operando à direita |
| |
OR ou |
OR lógico | Números inteiros | Números inteiros | "(1<2)||(2>4)" resulta em 1 | O resultado é true (1) ou false (0) |
&
AND e |
AND lógico | Números inteiros | Números inteiros | "(1<2)&&(2>4)" resulta em 0 | O resultado é true (1) ou false (0) |
!
NÃO não |
NOT lógico | Nenhum | Números inteiros | "!(2==4)" resulta em 1 | O resultado é true (1) ou false (0) |