# Expressão booleana

As expressões booleanas são permitidas na cláusula WHERE e nas restrições de verificação. As expressões booleanas nas restrições de verificação possuem limitações não descritas aqui; para obter mais informações deve ser consultada a Cláusula CONSTRAINT. As expressões booleanas nas cláusulas WHERE possuem uma sintaxe bem liberal; consulte, por exemplo, a Cláusula WHERE.

As expressões booleanas podem incluir um ou mais operadores booleanos, listados em Operadores booleanos SQL.

Tabela 1. Operadores booleanos SQL
Operador | Explicação e exemplo | Sintaxe
--- | --- | ---

AND, OR, NOT

Avalia os operandos, que são expressões booleanas

    (AEROPORTO_ORIGEM = 'SFO') OR
        (AEROPORTO_DESTINO = 'GRU')
    -- retorna verdade

    {
      Expressão AND
        Expressão |
      Expressão OR
        Expressão |
      NOT Expressão
    }

Comparações

<, =, >, <=, >=, <> são aplicáveis a todos os tipos nativos.

    DATE('1998-02-26') <
        DATE('1998-03-01')
    -- retorna verdade

    Expressão
    {
      < |
      = |
      > |
      <= |
      >= |
      <>
    }
    Expressão

IS NULL, IS NOT NULL

Testa se o resultado de uma expressão é nulo ou não.

    WHERE NOME_DO_MEIO IS NULL

    Expressão IS [ NOT ]
      NULL

LIKE

Tenta fazer a correspondência entre uma expressão de caractere e um padrão de caractere, que é uma cadeia de caracteres que inclui um ou mais caracteres curinga.

O caractere % corresponde a qualquer número (zero ou mais) de caracteres na posição correspondente na primeira expressão de caractere.

O caractere _ corresponde a um caractere na posição correspondente na expressão de caractere.

Qualquer outro caractere corresponde apenas a este caractere na posição correspondente na expressão de caractere.

    cidade LIKE 'Sant_'

Para tratar os caracteres % e _ como caracteres constante, o caractere deve ser precedido por um caractere de escape opcional, especificado na cláusula ESCAPE.

    SELECT a FROM tabA WHERE a
    LIKE '%=_' ESCAPE '='

    ExpressãoCaractere
      [ NOT ] LIKE
      ExpressãoCaractere
      ComCaractereCuringa
      [ ESCAPE
      'CaractereDeEscape']

BETWEEN

Testa se o primeiro operando está entre o segundo e o terceiro operandos. O segundo operando deve ser menor que o terceiro operando. Aplicável apenas aos tipos de dado onde se pode aplicar <= e >=.

    WHERE DATA_DE_RESERVA BETWEEN
        DATE('1998-02-26') AND
        DATE('1998-03-01')

    Expressão [ NOT ]
    BETWEEN Expressão
      AND Expressão

IN

Opera sobre uma subconsulta a tabela ou uma lista de valores. Retorna TRUE se o valor da expressão à esquerda está presente no resultado da subconsulta a tabela ou na lista de valores. A subconsulta a tabela pode retornar várias linhas, mas deve retornar uma única coluna.

    WHERE DATA_DE_RESERVA NOT IN
        (SELECT DATA_DE_RESERVA FROM
    RESERVAS_EM_HOTEL WHERE QUARTOS_DISPONÍVEIS = 0)

    {
      Expressão [ NOT ]
        IN
        SubconsultaTabela |
      Expressão [ NOT ]
        IN ( Expressão
        [, Expressão ]* )
    }

EXISTS

Opera sobre uma subconsulta a tabela. Retorna TRUE se a subconsulta a tabela retornar alguma linha, e FALSE se não retornar nenhuma linha. A subconsulta a tabela pode retornar várias colunas (somente se for utilizado * para indicar várias colunas) e linhas.

    WHERE EXISTS
      (SELECT *
      FROM VÔOS
      WHERE AEROPORTO_DESTINO = 'SFO'
      AND AEROPORTO_ORIGEM = 'GRU')

    [NOT] EXISTS SubconsultaTabela

Comparação quantificada

A comparação quantificada é um operador de comparação (<, =, >, <=, >=, <>) com ALL, ANY ou SOME aplicado.

Opera sobre subconsultas a tabela, que podem retornar várias linhas, mas devem retornar uma única coluna.

Se for utilizado ALL, a comparação deverá ser verdade para todos os valores retornados pela subconsulta a tabela. Se for utilizado ANY ou SOME, a comparação deverá ser verdade para pelo menos um valor da subconsulta a tabela. ANY e SOME são equivalentes.

    WHERE TAXA_NORMAL < ALL
    (SELECT ORÇAMENTO/550 FROM GRUPOS)

    Expressão
      OperadorComparação
      {
        ALL |
        ANY |
        SOME
      }
      SubconsultaTabela

Tópico pai: Expressões SQL
Conceitos relacionados
Parâmetros dinâmicos
Referências relacionadas
Precedência das expressões