Quelqu'un peut-il expliquer comment fonctionne la fonction COALESCE dans TSQL ? La syntaxe est la suivante
COALESCE(x, y)
Le document MSDN sur cette fonction est assez vague
Quelqu'un peut-il expliquer comment fonctionne la fonction COALESCE dans TSQL ? La syntaxe est la suivante
COALESCE(x, y)
Le document MSDN sur cette fonction est assez vague
Je ne sais pas pourquoi vous pensez que la documentation est vague.
Il passe simplement en revue tous les paramètres un par un, et renvoie le premier qui est NOT NULL
.
COALESCE(NULL, NULL, NULL, 1, 2, 3)
=> 1
COALESCE(1, 2, 3, 4, 5, NULL)
=> 1
COALESCE(NULL, NULL, NULL, 3, 2, NULL)
=> 3
COALESCE(6, 5, 4, 3, 2, NULL)
=> 6
COALESCE(NULL, NULL, NULL, NULL, NULL, NULL)
=> NULL
Il accepte à peu près n'importe quel nombre de paramètres, mais ils doivent être du même type de données. (S'il ne s'agit pas du même type de données, ils sont implicitement convertis en un type de données approprié à l'aide de la fonction ordre de préséance des types de données .)
C'est comme si ISNULL()
mais pour plusieurs paramètres, au lieu de deux seulement.
C'est aussi ANSI-SQL
où ISNULL()
ne l'est pas.
On m'a dit que COALESCE est moins coûteux que ISNULL, mais les recherches ne l'indiquent pas. ISNULL ne prend que deux paramètres, le champ qui est évalué pour NULL, et le résultat que vous voulez s'il est évalué comme NULL. COALESCE prend un nombre quelconque de paramètres et renvoie la première valeur rencontrée qui n'est pas NULL.
Il y a une description beaucoup plus complète des détails ici http://www.mssqltips.com/sqlservertip/2689/deciding-between-coalesce-and-isnull-in-sql-server/
Voici la façon dont je vois COALESCE... et j'espère que cela a un sens...
Dans une forme simpliste .
Coalesce(FieldName, 'Empty')
Cela se traduit donc par Si "FieldName" est NULL, remplissez la valeur du champ avec le mot "EMPTY".
Maintenant pour les valeurs multiples...
Coalesce(Nom du champ1, Nom du champ2, Valeur2, Valeur3)
Si la valeur de Fieldname1 est nulle, on la remplit avec la valeur de Fieldname2, si FieldName2 est NULL, on la remplit avec Value2, etc.
Ce morceau de code de test pour le AdventureWorks2012 L'exemple de base de données fonctionne parfaitement et donne une bonne explication visuelle de la façon dont les services de l'UE sont utilisés. COALESCE travaux :
SELECT Name, Class, Color, ProductNumber,
COALESCE(Class, Color, ProductNumber) AS FirstNotNull
FROM Production.Product
La coalescence est bien plus qu'un simple remplacement de ISNULL. Je suis tout à fait d'accord pour dire que la "documentation" officielle de coalesce est vague et peu utile. Cet article est d'une grande aide. http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
Voici une requête simple contenant coalesce -
select * from person where coalesce(addressId, ContactId) is null.
Il renverra les personnes pour lesquelles addressId et contactId sont tous deux nuls.
fonction de fusion
par exemple
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.