Ao compilar sql-queries,A situação ao selecionar dados, você precisa comparar os valores de várias colunas e exibir uma delas, que contém dados (não vazios). Este problema é perfeitamente resolvido pela expressão Coalesce. Neste artigo, você encontrará uma descrição completa da expressão Coalesce sql, uma descrição dos recursos de uso, bem como exemplos.
Considere as características de uso de Sql Coalesce:
Todos que usaram Coalesce pelo menos uma vezcompilando sql-queries, sabe que a sintaxe dessa expressão é extremamente simples. É suficiente especificar em argumentos entre parênteses, verificados em Nulo, separados por vírgulas. Se assumirmos que os argumentos têm os nomes arg1, arg2, ... argN, a sintaxe Coalesce ficará assim:
Coalesce (arg1, arg2, ... argN).
Vamos preparar várias tabelas para estudar o mecanismo desta expressão.
Para entender melhor a descrição de Coalesce sql, criaremos no banco de dados duas tabelas contendo informações sobre objetos imobiliários.
A primeira tabela de área deve conter os nomes de objetos imobiliários e sua área. A área pode ser especificada (area_yt) ou declarada (area_decl).
ID | object_name | area_yt | area_decl |
1 | Edifício 1 | 116,2 | 114 |
2 | Objeto de construção inacabado 1 | 568 | |
3 | Quarto 1 | 64,7 | |
4 | Quarto 2 | 34,2 | |
5 | Lote de terreno 1 | 112 | 111,6 |
6 | Facilidade 1 | ||
7 | Salas 3 | 27,9 | |
8 | Construção 2 | 37,2 | 36,4 |
9 | Prédio 2 |
A segunda tabela é basic_characteristiccontém informações sobre as principais características da propriedade - Extensão, Profundidade, Área, Escopo, Altura.
ID | object_name | Extensão | Profundidade | Area | Escopo | Altura |
1 | Edifício 1 | 892,4 | 30 | |||
2 | Prédio 2 | 48 | ||||
3 | Facilidade 1 | 164,7 | ||||
4 | Lote de terreno 1 | |||||
5 | Quarto 1 | 23,6 | ||||
6 | Quarto 2 | 34,7 | ||||
7 | Salas 3 | 19,8 |
Examinamos a sintaxe do Coalesce sql, a descrição, os recursos de uso e prosseguimos diretamente para os exemplos.
A sintaxe da expressão Coalesce é muito simples,mas é importante lembrar que o resultado do comando será o PRIMEIRO valor não vazio encontrado na lista de argumentos. Essa observação é muito importante, portanto os argumentos na expressão devem ser colocados em ordem de importância. A maneira mais fácil de entender o princípio da tabela de área. Faça um pedido que selecione o nome da propriedade, bem como o valor da área:
SELECT Area.id, Area.object_name, coalesce (Area.area_yt, Area.area_decl) FROM Área |
E obtenha o resultado:
ID | object_name | Coalesça |
1 | Edifício 1 | 116,2 |
2 | Objeto de construção inacabado 1 | 568 |
3 | Quarto 1 | 64,7 |
4 | Quarto 2 | 34,2 |
5 | Lote de terreno 1 | 112 |
6 | Facilidade 1 | |
7 | Salas 3 | 27,9 |
8 | Construção 2 | 37,2 |
9 | Prédio 2 |
Para os objetos "Building 1", "Land plot 1" e"Construction 2" foi preenchido com os dois valores da área, mas na prioridade foi refinada a área, porque nós indicamos na lista de argumentos primeiro. A expressão Coalesce encontrou o primeiro valor não vazio e o deduziu, impedindo a visualização adicional dos argumentos. Essa construção da consulta está correta, porque a área especificada é mais específica que a declarada. Se nós especificarmos a área declarada como o primeiro argumento, então se este campo de tabela estiver cheio, ele estará em prioridade.
Além de usar no Select, muitas vezesa expressão Coalesce é aplicada com a cláusula Where. Ele permite que você exclua do resultado as linhas em que a lista de campos está vazia (ou vice-versa, inclua apenas os valores no resultado em que a lista de campos não está preenchida). Essa situação está em toda parte: por exemplo, no momento do registro de um novo funcionário, apenas informações básicas sobre o funcionário foram inseridas no banco de dados, e as informações detalhadas foram deixadas "para mais tarde". Gradualmente, as "lacunas" flutuam - antes do cheque ou quando o empregado está de férias / viagem de negócios / licença médica.
Escolha na tabela as principais características dos objetos imobiliários, que não possuem nenhum dos valores das características:
SELECT id, object_name FROM basic_characteristic Onde coalescer (extensão, profundidade, área, escopo, altura) é nulo |
Para esta consulta, há uma correspondência na tabela - o objeto "Land plot 1", no qual todos os campos com características estão vazios:
ID | object_name |
4 | Lote de terreno 1 |
Esperamos que nossa descrição detalhada do Coalesce sql ajude você a entender todos os recursos de usar essa expressão, além de lidar com nuances importantes.
</ p>