Lors de la composition de requêtes SQL, il se produit souventune situation où, lors de la récupération des données, il est nécessaire de comparer les valeurs de plusieurs colonnes et d'afficher celle qui contient les données (pas vide). L'expression Coalesce résout parfaitement ce problème. Dans cet article, vous trouverez une description complète de l'expression sql Coalesce, une description des fonctionnalités de son utilisation, ainsi que des exemples.
Sortie de valeurs non vides avec Coalesce. Caractéristiques du
Considérez les fonctionnalités d'utilisation de Sql Coalesce :
- Permet de spécifier n'importe quel nombre d'arguments (contrairement à Isnull / Nvl / Nvl2, qui ont un nombre limité d'arguments).
- Peut prendre des sous-requêtes comme argument.
- Renvoie un résultat égal à la première une valeur non nulle, ou Null si aucune valeur non nulle n'est trouvée.
- Sql Coalesce peut être utilisé dans une clause Select pour sélectionner une valeur non vide, et également dans Where pour préciser qu'un ensemble de colonnes avec des valeurs vides n'est pas autorisé (/ est autorisé).
- Cette expression est la même que l'utilisation de l'expressionCase, qui vérifie chaque argument de manière séquentielle pour la condition. Lorsque argument1 n'est pas nul, argument1. Fondamentalement, Coalesce est un raccourci facilitant l'utilisation, et dans de nombreux SGBD, les optimiseurs de requêtes réécrivent l'expression Coalesce dans Case.
- Les fonctions Sql Coalesce sont disponibles dans tous les principaux systèmes de gestion de bases de données relationnelles.
Syntaxe de fusion
Quiconque a déjà utilisé Coalesce àcomposant des requêtes SQL, sait que la syntaxe de cette expression est extrêmement simple. Il suffit de spécifier les arguments testés pour Null entre parenthèses, séparés par des virgules. Si nous supposons que les arguments sont nommés arg1, arg2,… argN, alors la syntaxe pour Coalesce sera la suivante :
Fusionner (arg1, arg2, ... argN).
Préparons plusieurs tableaux pour étudier le mécanisme de cette expression.
Préparation des tableaux
Pour mieux comprendre la description de Coalesce sql, créons deux tables contenant des informations sur les objets immobiliers de la base de données.
Que le premier tableau, Area, contienne les noms des objets immobiliers et leur superficie. La zone peut être spécifiée (area_yt) ou déclarée (area_decl).
id | nom_objet | zone_yt | zone_decl |
1 | Bâtiment 1 | 116,2 | 114 |
2 | Construction en cours 1 | 568 | |
3 | Chambre 1 | 64,7 | |
4 | Chambre 2 | 34,2 | |
5 | Terrain 1 | 112 | 111,6 |
6 | Bâtiment 1 | ||
7 | Chambre 3 | 27,9 | |
8 | Bâtiment 2 | 37,2 | 36,4 |
9 | Bâtiment 2 |
La deuxième table Basic_characteristic laissecontient des informations sur les principales caractéristiques de l'objet immobilier - Extension, Profondeur, Superficie, Portée, Hauteur.
id | nom_objet | Extension | Profondeur | Surface | Portée | Hauteur |
1 | Bâtiment 1 | 892,4 | 30 | |||
2 | Bâtiment 2 | 48 | ||||
3 | Bâtiment 1 | 164,7 | ||||
4 | Terrain 1 | |||||
5 | Chambre 1 | 23,6 | ||||
6 | Chambre 2 | 34,7 | ||||
7 | Chambre 3 | 19,8 |
Nous avons regardé la syntaxe de Coalesce sql, la description, les fonctionnalités d'utilisation, et passons directement aux exemples.
Exemples d'utilisation
La syntaxe de l'expression Coalesce est extrêmement simple,cependant, il est important de se rappeler que la commande renverra la PREMIÈRE valeur non vide trouvée dans la liste d'arguments. Cette remarque est très importante, les arguments de l'expression doivent donc être classés par ordre d'importance. La façon la plus simple de comprendre le principe est à partir de la table des aires. Faites une requête qui sélectionne le nom de la propriété, ainsi que la valeur de la zone :
SELECT Area.id, Area.object_name, fusionner (Area.area_yt, Area.area_decl) De la zone |
Et obtenez le résultat :
id | nom_objet | Se fondre |
1 | Bâtiment 1 | 116,2 |
2 | Construction en cours 1 | 568 |
3 | Chambre 1 | 64,7 |
4 | Chambre 2 | 34,2 |
5 | Terrain 1 | 112 |
6 | Bâtiment 1 | |
7 | Chambre 3 | 27,9 |
8 | Bâtiment 2 | 37,2 |
9 | Bâtiment 2 |
Pour les objets "Bâtiment 1", "Terrain 1" et"Bâtiment 2" les deux valeurs de la zone ont été renseignées, mais la priorité était la zone qui a été spécifiée, puisque nous l'avons spécifiée en premier dans la liste des arguments. L'expression Coalesce a trouvé la première valeur non vide et l'a vidé, arrêtant d'autres analyses d'arguments. Cette construction de requête est correcte, car la zone spécifiée est plus définie que celle déclarée. Si nous avions spécifié la zone déclarée comme premier argument, alors si ce champ de la table était rempli, il aurait la priorité.
En plus d'être utilisé dans Select, très souventl'expression Coalesce est appliquée avec une clause Where. Il vous permet de couper du résultat les lignes dans lesquelles les valeurs de la liste des champs sont vides (ou vice versa, pour n'inclure dans le résultat que les valeurs où la liste des champs est vide). Cette situation se produit partout: par exemple, dans l'entreprise, lors de l'enregistrement d'un nouvel employé, seules les informations de base le concernant ont été saisies dans la base de données et le remplissage des informations détaillées a été laissé «pour plus tard». Peu à peu, des "lacunes" apparaissent - soit avant le contrôle, soit lors de l'envoi d'un employé en vacances / voyage d'affaires / congé de maladie.
Choisissons dans le tableau avec les principales caractéristiques des objets immobiliers pour lesquels aucune des valeurs de caractéristiques n'est renseignée :
ID SELECT, nom_objet FROM Basic_characteristic Où coalescer (Extension, Depth, Area, Scope, Height) est nul |
Pour cette requête, il y a une correspondance dans le tableau - l'objet "Land plot 1", dans lequel tous les champs avec des caractéristiques sont vides :
id | nom_objet |
4 | Terrain 1 |
Nous espérons que notre description détaillée de Coalesce sql vous a aidé à comprendre toutes les fonctionnalités de l'utilisation de cette expression, ainsi qu'à traiter les nuances importantes.