Como usar o sql expressões de caso nullif e se aglutinam

A única coisa que você pode ter certeza neste mundo é a mudança. Felizmente, o SQL é responsável por isso. termodinâmica clássica e teoria do caos moderno ambos indicam que sistemas naturalmente migrar de um estado conhecido, ordenou em um estado desordenado que ninguém pode prever. Qualquer pessoa que tenha monitorado o estado do quarto de um adolescente por um período de uma semana após o quarto é limpo posso garantir para essas teorias.

tabelas de banco de dados tem valores definidos em campos que contêm conteúdos conhecidos. Normalmente, se o valor de um campo é desconhecido, o campo contém o valor nulo. Em SQL, você pode usar um CASO expressão de alterar o conteúdo de um campo de tabela a partir de um valor definido para um valor nulo. O valor nulo indica que você não sabe mais o valor do campo. Considere o seguinte exemplo.

Imagine que você possui uma pequena companhia aérea que oferece vôos entre o sul da Califórnia e de Washington. Até recentemente, alguns de seus vôos parou no Aeroporto Internacional de San Jose para reabastecer antes de continuar. Infelizmente, você acabou de perder o seu direito de voar para San Jose. A partir de agora, você deve fazer o seu reabastecimento parar em qualquer Aeroporto Internacional de San Francisco ou o Aeroporto Internacional de Oakland.

Neste ponto, você não sabe que os voos parar em qual aeroporto, mas você sabe que nenhum dos vôos estão parando em San Jose. Você tem um banco de dados de vôo que contém informações importantes sobre suas rotas, e agora você deseja atualizar o banco de dados para remover todas as referências a San Jose. O exemplo a seguir mostra uma maneira de fazer isso:

ATUALIZAÇÃO FLIGHTSET RefuelStop = CASEWHEN RefuelStop = `San Jose`THEN NULLELSE RefuelStopEND -

Porque ocasiões como este - em que você deseja substituir um valor conhecido com um valor nulo - surgem frequentemente, SQL oferece uma notação abreviada para realizar essa tarefa. O exemplo anterior, expressos nesta forma abreviada, esta aparência:

ATUALIZAÇÃO FLIGHTSET RefuelStop = NULLIF (RefuelStop, `San José`) -

Você pode traduzir esta expressão para o Inglês como “atualizar a tabela VÔO definindo o RefuelStop coluna para NULL se o valor existente de RefuelStop é `São José`. Caso contrário, fazer nenhuma mudança.”

NULLIF é ainda mais prático se você está convertendo dados que você originalmente acumulada para uso com um programa escrito em uma linguagem de programação padrão, como C ++ ou Java. linguagens de programação padrão não têm valores nulos, portanto, uma prática comum é usar valores especiais para representar o conceito de “não sabe” ou “não aplicável”.

A numérico -1 pode representar um valor não conhecido por SALÁRIO, por exemplo, e uma cadeia de caracteres “***” pode representar um valor não conhecido ou não-aplicável para CÓDIGO DE TRABALHO. Se você deseja representar esses estados não conhecidos e não-aplicáveis ​​em um banco de dados SQL-compatível usando nulos, você tem que converter os valores especiais para valores nulos. O exemplo a seguir faz esta conversão para uma tabela de funcionários, em que alguns valores salariais são desconhecidos:

ACTUALIZAÇÃO EMPSET salário = PROCESSO SalaryWHEN -1 então NULLELSE SalaryEND -


Você pode executar esta conversão mais convenientemente usando NULLIF, do seguinte modo:

ACTUALIZAÇÃO EMPSET salário = NULLIF (salário, -1) -

COALESCE, gostar NULLIF, é uma forma abreviada de uma determinada CASO expressão. COALESCE lida com uma lista de valores que podem ou não podem ser nulos. Veja como funciona:

  • Se um dos valores da lista não é nulo: o COALESCE expressão assume esse valor.

  • Se mais de um valor na lista não é nulo: A expressão assume o valor do primeiro item não nulo na lista.

  • Se todos os valores na lista são nulos: A expressão assume o valor nulo.

UMA CASO expressão com esta função tem a seguinte forma:

CASEWHEN value1 NÃO É NULLTHEN value1WHEN value2 NÃO É value2 NULLTHEN ... QUANDO valorn NÃO É NULLTHEN valornNULLEND ELSE

O correspondente COALESCE taquigrafia parece com isso:

COALESCE (valor1, valor2, ..., valorn)

Você pode querer usar um COALESCE expressão depois de executar um OUTER JOIN Operação. Em tais casos, COALESCE você pode salvar um monte de digitação.


Publicações relacionadas