DB2 - Banco de dados - Instruções e Funções Básicas - WHERE


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

WHERE

Utilize uma cláusula WHERE em sua instrução SELECT para especificar uma condição (um ou mais critérios de seleção) que identifica a(s) linha(s) que você deseja recuperar, atualizar ou excluir. Apenas as linhas que satisfazem a condição da pesquisa são afetadas.

Tanto WHERE quanto HAVING eliminam os dados que você não deseja no relatório:

  • A condição WHERE é usada com seleção de coluna. Ela determina se uma linha individual é incluída.

    Utilize WHERE para eliminar as linhas indesejadas.

  • A condição HAVING é usada com funções embutidas.
    Ela determina se um grupo inteiro é incluído.

    HAVING é sempre seguida de uma função de coluna (como SUM, AVG, MAX, MIN ou COUNT).
    HAVING também pode ser seguida de uma subconsulta que encontra um valor agrupado para completar a condição HAVING.

    Utilize HAVING para excluir dados agrupados não desejados.

Você pode comparar os valores da coluna usando qualquer um dos operadores mostrados na tabela a seguir.
A condição que é definida na primeira coluna é especificada digitando as palavras ou os símbolos correspondentes na segunda coluna.

Tabela 1. Operadores de comparação

Comparação Operador de comparação a ser usado
Igual a =
Não igual a

<> or ¬=

Maior que >
Maior que ou igual a >=
Não maior que (DB2 for z/OS apenas) ¬>
Menor que <
Menor que ou igual a <=
Não menor que (DB2 for z/OS apenas) ¬<
Múltiplas condições

AND
OR

Valores com um intervalo BETWEEN x AND y
Os valores correspondem a qualquer valor em uma lista IN (x, y, z)
Seleciona uma cadeia de caracteres

% (exemplo: LIKE '%abc%')

Ignora determinados caracteres

_ (exemplo: LIKE '_a_')

Condições negativas NOT

Um sinal de não (¬) pode causar erros de análise em instruções que são transmitidas de um sistema de gerenciamento de banco de dados para outro.
Para evitar esse possível problema em instruções a serem executadas em uma localidade remota, substitua o sinal de negação por um equivalente em qualquer operação onde o mesmo apareça.

Os valores a serem comparados com colunas de dados de caracteres devem ser colocados entre aspas simples (como em WHERE NAME = 'JONES').
Os dados numéricos não são colocados entre aspas.

Se você estiver utilizando dados gráficos, o valor depois de WHERE deverá ser precedido do caractere de byte único, 'G', e deverá ser colocado entre aspas.
O sinal de porcentagem e o sublinhado devem ser caracteres de byte duplo.

Exemplos

Aqui estão alguns exemplos de como usar uma cláusula WHERE em uma consulta:

No exemplo a seguir, a condição de pesquisa especifica que o valor da coluna DEPT seja 20. Esta consulta:

   SELECT DEPT
   ,      NAME
   ,      JOB
   FROM   Q.STAFF
   WHERE DEPT = 20

Produz este relatório:

   DEPT  NAME        JOB
   ----  ----------  -----
     20  SANDERS     MGR
     20  PERNAL      SALES
     20  JAMES       CLERK
     20  SNEIDER     CLERK

Para listar o salário menor, maior e médio em cada departamento, excluindo os gerentes, para departamentos com uma média salarial maior do que $12.000, use a seguinte consulta.
Esta consulta:

   SELECT DEPT
   ,      MIN(SALARY)
   ,      MAX(SALARY)
   ,      AVG(SALARY)
   FROM   Q.STAFF
   WHERE  JOB <> 'MGR'
   GROUP  BY DEPT
   HAVING AVG(SALARY) > 12000

Produz este relatório:


   DEPT         COL1        COL2                COL3
   ------   ----------   ----------  ------------------
       15     12258.50     16502.83    13756.5100000000
       20     13504.60     18171.25    15309.5333333333
       38     12009.75     18006.00    14944.7000000000
       42     10505.90     18001.75    13338.7500000000
       51     13369.80     19456.50    16235.2000000000
       66     10988.00     21000.00    16880.1750000000
       84     13030.50     17844.00    15443.0000000000

Você pode escrever uma condição de pesquisa WHERE que usa qualquer um dos operadores de comparação.

Por exemplo, para selecionar somente os funcionários que fez comissões de $1.000 ou mais, use uma consulta como a seguinte. Esta consulta:

   SELECT ID
   ,      COMM
   FROM   Q.STAFF
   WHERE  COMM >= 1000

Produz este relatório:

     ID     COMM
   -----  -------
      70  1152.00
      90  1386.70
     340  1285.00

Para selecionar todos com 10 anos ou mais de serviço:

   SELECT ID
   ,      NAME
   ,      YEARS
   FROM   Q.STAFF
   WHERE  YEARS >= 10

Para selecionar todos com mais de 10 anos de serviço:


   SELECT ID
   ,      NAME
   ,      YEARS
   FROM   Q.STAFF
   WHERE  YEARS > 10

Para selecionar todos os gerentes:

   SELECT ID
   ,      NAME
   ,      YEARS
   FROM   Q.STAFF
   WHERE  JOB = 'MGR'

Para selecionar todos cujo nome vem depois de SMITH na ordem alfabética:

   SELECT NAME
   ,      ID
   FROM   Q.STAFF
   WHERE  NAME > 'SMITH'

Para selecionar todos os nomes de funcionário em Q.STAFF que não estão no Departamento 10:

   SELECT NAME
   ,      ID
   FROM   Q.STAFF
   WHERE  DEPT < > 10


© Copyright IBM Corp.