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


Volta a página anterior

Volta ao Menu Principal


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

LIKE

LIKE só pode ser usado com dados de caracteres, gráficos e binários em consultas SQL e só com dados de caracteres e gráficos em consultas QBE.

Para selecionar dados de caractere, gráficos ou binários, quando você só conhece parte de um valor, use LIKE em uma cláusula WHERE, mais um símbolo para os dados desconhecidos:

  • Um sinal de porcentagem (%) é o símbolo para qualquer número de caracteres (ou nenhum).
  • Um sublinhado (_) é o símbolo para qualquer caractere único.
    Use mais de um sublinhado em sucessão para representar um número exato de caracteres desconhecidos.

Você também pode usar % e _ juntos.
Por exemplo, para selecionar todos os nomes com AN ou ON como a segunda e a terceira letras:

   SELECT ID
   ,      NAME
   FROM   Q.STAFF
   WHERE  NAME LIKE '_AN%' OR NAME LIKE '_ON%'

Para dados de caracteres, o valor após LIKE sempre deverá ser incluído entre aspas simples.
Se estiver usando dados gráficos, o valor após LIKE deverá ser precedido do caractere de byte único, 'G', entre aspas. O sinal de porcentagem e o sublinhado devem ser caracteres de byte duplo.

Selecionando uma Cadeia de Caracteres

Você pode selecionar linhas contendo uma cadeia de caracteres que pode ser parte de uma palavra ou número que você sabe que existe nos dados.
No exemplo a seguir, WHERE ADDRESS LIKE '%NY' seleciona qualquer endereço que contém os caracteres NY no final. O sinal de porcentagem (%) pode representar qualquer coisa - qualquer número de caracteres (ou nenhum).

Esta consulta:

   SELECT NAME
   ,      ADDRESS
   FROM   Q.APPLICANT
   WHERE  ADDRESS LIKE '%NY'

Produz este relatório:


   NAME       ADDRESS
   ---------  -----------------
   JACOBS     POUGHKEEPSIE, NY
   REID       ENDICOTT, NY
   LEEDS      EAST FISHKILL, NY

Ao usar LIKE para pesquisar dados com uma terminação específica, esteja a par do tipo de dados da coluna que você está pesquisando.
Se a coluna tiver uma largura fixa e os dados da coluna variarem em largura, adicione espaços em branco à cadeia de caracteres para corresponderem aos espaços em branco dos dados da coluna.

Por exemplo, se a coluna ADDRESS no exemplo tiver um tipo de dados do CHAR(17), a largura da coluna será corrigida, com espaços em branco preenchendo o espaço onde os dados não tiverem a mesma largura da coluna.
A procura com uma cadeia de caracteres final exige que você antecipe (e procure) a cadeia com todo número possível de espaços em branco que pode ser encontrada nos dados.

Por exemplo, para selecionar todas as pessoas cujos nomes começa com W, use uma consulta como a seguinte:


   SELECT ID
   ,      NAME
   FROM   Q.STAFF
   WHERE  NAME LIKE 'W%'

Ignorando Caracteres Específicos

Você pode usar o sublinhado (_) para especificar uma cadeia de caracteres que ignora um determinado número de caracteres.
Use um número específico de sublinhados para especificar o mesmo número de caracteres que deve ser ignorado na pesquisa.
Por exemplo: a cláusula a seguir é usada para procurar a sequência de caracteres "G2044", em uma coluna de números de peças com 8 caracteres, que ocorra nas posições 2 e 6.
O primeiro caractere e os dois últimos caracteres são ignorados.
É necessário colocar valores compostos apenas por dígitos no DB2 for z/OS entre aspas simples.
(Note que há dois sublinhados após o valor entre aspas.)

WHERE PARTNO LIKE '_G2044__'

Exemplos

  • Para selecionar todo nome que tem um S em qualquer posição após a primeira, use uma consulta como a seguinte:
       SELECT ID
       ,      NAME
       FROM   Q.STAFF
       WHERE  NAME LIKE '_%S%'
  • Para selecionar todos os nomes que terminem em SON, use uma consulta como a seguinte:
       SELECT ID
       ,      NAME
       FROM   Q.STAFF
       WHERE  NAME LIKE '%SON'

    Esse exemplo funciona porque a coluna NAME tem um tipo de dados de VARCHAR, que não tem espaços em branco após o mesmo no banco de dados.
    Se uma coluna possuir um tipo de dados CHAR, com uma largura fixa, a consulta terá que antecipar todos os comprimentos dos nomes que terminam em SON e terá que incluir essas combinações no valor de procura.

Veja também:



© Copyright IBM Corp.