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
sql
sql-server
sql-server-2008
tsql
Lloyd Banks
la source
la source
ISNULL
, ce n'est pas standard, moins flexible, j'ai lu qu'il renverra toujours le type de données du premier argument et non le type de données de la valeur retournée comme leCOALESCE
fait.Je ne sais pas pourquoi vous pensez que la documentation est vague.
Il parcourt simplement tous les paramètres un par un et renvoie le premier qui est
NOT NULL
.Il accepte à peu près n'importe quel nombre de paramètres, mais ils devraient être du même type de données. (S'ils ne sont pas du même type de données, ils sont implicitement convertis en un type de données approprié en utilisant l'ordre de priorité des types de données .)
C'est comme
ISNULL()
mais pour plusieurs paramètres, plutôt que deux.C'est aussi
ANSI-SQL
, où-commeISNULL()
pas.la source
ISNULL
renvoie une valeur avec le même type de données que le premier paramètre, cependantexpressions
, des comparaisons avec CASE, des comparaisons avec ISNULL, et enfin un exemple sans résultat. Puis un exemple trop complexe avec trop de détails. Lorsque tout ce dont nous avons besoin est cette réponse avec 5 à 6 lignes de WTF, cette chose est et fait.Voici ma vision de COALESCE ... et j'espère que cela a du sens ...
Sous une forme simpliste….
Coalesce (FieldName, 'Vide')
Donc, cela se traduit par… Si "FieldName" est NULL, remplissez la valeur du champ avec le mot "EMPTY".
Maintenant pour plusieurs valeurs ...
Coalesce (FieldName1, FieldName2, Value2, Value3)
Si la valeur de Fieldname1 est nulle, remplissez-la avec la valeur de Fieldname2, si FieldName2 est NULL, remplissez-la avec Value2, etc.
Ce morceau de code de test pour l' exemple de base de données AdventureWorks2012 fonctionne parfaitement et donne une bonne explication visuelle du fonctionnement de COALESCE :
la source
Il y a beaucoup plus à fusionner qu'un simple remplacement pour ISNULL. Je suis tout à fait d'accord pour dire que la "documentation" officielle de coalesce est vague et inutile. Cet article aide beaucoup. http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
la source
Voici une simple requête contenant coalesce -
Il renverra les personnes pour lesquelles addressId et contactId sont nuls.
fonction de fusion
par exemple
la source
La définition la plus simple de la fonction Coalesce () pourrait être:
Remarque: il évalue TOUS les paramètres, c'est-à-dire ne saute pas l'évaluation du ou des arguments sur le côté droit du paramètre retourné / NOT NULL.
Syntaxe:
Attention : à part les arguments évalués à NULL, tous les autres arguments (NOT-NULL) doivent être soit du même type de données, soit de types correspondants (qui peuvent être "implicitement auto-convertis" en un type de données compatible), voir les exemples au dessous de:
HTH
la source
la source