Alguém pode explicar como funciona a função COALESCE em TSQL? A sintaxe é a seguinte
COALESCE (x, y)
O documento do MSDN sobre esta função é muito vago
sql
sql-server
sql-server-2008
tsql
Lloyd Banks
fonte
fonte
ISNULL
, não é padrão, é menos flexível, eu li que ele retornará o tipo de dados do primeiro argumento sempre e não o tipo de dados do valor retornado comoCOALESCE
faz.Não sei por que você acha que a documentação é vaga.
Ele simplesmente passa por todos os parâmetros um por um e retorna o primeiro que é
NOT NULL
.Ele aceita praticamente qualquer número de parâmetros, mas eles devem ser do mesmo tipo de dados. (Se eles não forem do mesmo tipo de dados, eles são implicitamente convertidos em um tipo de dados apropriado usando a ordem de precedência do tipo de dados .)
É como,
ISNULL()
mas para vários parâmetros, em vez de apenas dois.É também
ANSI-SQL
, ondeISNULL()
não está.fonte
ISNULL
retorna um valor com o mesmo tipo de dados do primeiro parâmetroexpressions
, comparações com CASE, comparações com ISNULL e, finalmente, um exemplo sem resultado. Em seguida, um exemplo excessivamente complexo com muitos detalhes. Quando tudo o que precisamos é essa resposta com 5 - 6 linhas de WTF, essa coisa é e faz.É assim que vejo o COALESCE ... e espero que faça sentido ...
De uma forma simplista….
Coalesce (FieldName, 'Vazio')
Portanto, isso se traduz em ... Se "FieldName" for NULL, preencha o valor do campo com a palavra "EMPTY".
Agora, para vários valores ...
Coalesce (FieldName1, FieldName2, Value2, Value3)
Se o valor em Fieldname1 for nulo, preencha com o valor em Fieldname2, se FieldName2 for NULL, preencha com Value2, etc.
Este pedaço de código de teste para o banco de dados de exemplo AdventureWorks2012 funciona perfeitamente e oferece uma boa explicação visual de como o COALESCE funciona:
fonte
Há muito mais a unir do que apenas um substituto para ISNULL. Eu concordo plenamente que a "documentação" oficial da coalescência é vaga e inútil. Este artigo ajuda muito. http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
fonte
Aqui está uma consulta simples contendo coalescer -
Ele retornará as pessoas em que addressId e contactId são nulos.
função de coalescência
por exemplo
fonte
A definição mais simples da função Coalesce () poderia ser:
Nota: avalia TODOS os parâmetros, ou seja, não ignora a avaliação do (s) argumento (s) no lado direito do parâmetro retornado / NÃO NULO.
Sintaxe:
Cuidado : além dos argumentos avaliados como NULL, todos os outros argumentos (NOT-NULL) devem ser do mesmo tipo de dados ou de tipos correspondentes (que podem ser "auto-convertidos implicitamente" em um tipo de dados compatível), consulte os exemplos abaixo:
HTH
fonte
fonte