Coalesce sql: description, utilisation, exemples

Dans la préparation de requêtes SQL se produit souventune situation dans laquelle lors de la récupération de données, il est nécessaire de comparer les valeurs de plusieurs colonnes et de générer celle contenant les données (non vide). Ce problème est parfaitement résolu par l'expression Coalesce. Dans cet article, vous trouverez une description complète de l'expression SQL Coalesce, une description des fonctionnalités d'utilisation et des exemples.

coalesce sql description

Trouver des valeurs non vides avec Coalesce. Caractéristiques spéciales

Considérez les fonctionnalités d’utilisation de Sql Coalesce:

  1. Permet de spécifier un nombre quelconque d'arguments (par opposition à Isnull / Nvl / Nvl2, nombre d'arguments dans lequel est limité).
  2. Peut prendre des sous-requêtes comme argument.
  3. Retourne un résultat égal à premier une valeur autre que Null ou Null si aucune valeur autre que Null n'est trouvée.
  4. Sql Coalesce peut être utilisé dans la clause Select pour sélectionner une valeur non vide, ainsi que dans Où préciser qu'un ensemble de colonnes avec des valeurs vides n'est pas autorisé (/ autorisé).
  5. Cette expression équivaut à utiliser l'expressionVérification de la casse successivement de chaque argument pour une condition Lorsque argument1 n'est pas nul, argument1. Coalesce est essentiellement une «étiquette» créée pour une utilisation simplifiée. Dans de nombreux optimiseurs de requêtes de SGBD, l’écriture de l’expression Coalesce to Case est réécrite.
  6. Les fonctions Sql Coalesce sont disponibles dans tous les principaux systèmes de gestion de bases de données relationnelles.

sql coalesce

Syntaxe de coalesce

Toute personne ayant utilisé Coalesce au moins une foisla compilation de requêtes SQL, sait que la syntaxe de cette expression est extrêmement simple. Il suffit d'indiquer entre parenthèses les arguments cochés pour Null, séparés par des virgules. Si nous supposons que les arguments sont arg1, arg2, ... argN, la syntaxe de Coalesce ressemblera à ceci:

Coalesce (arg1, arg2, ... argN).

fonctions de fusion SQL

Nous préparerons plusieurs tableaux pour étudier le mécanisme de fonctionnement de cette expression.

Préparation des tables

Pour mieux comprendre la description de Coalesce sql, créez deux tables dans la base de données contenant des informations sur les objets immobiliers.

Laissez la première table Area contenir les noms des objets immobiliers et leur zone. La zone peut être spécifiée (area_yt) ou déclarée (area_decl).

identifiant

nom_objet

area_yt

area_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

Parcelle 1

112

111,6

6

Facilité 1

7

Chambre 3

27,9

8

Facilité 2

37,2

36,4

9

Bâtiment 2

La seconde table Basic_characteristic letcontient des informations sur les principales caractéristiques de la propriété - extension (extension), profondeur (profondeur), superficie (superficie), volume (étendue), hauteur (hauteur).

identifiant

nom_objet

Extension

Profondeur

Zone

Champ d'application

Hauteur

1

Bâtiment 1

892,4

30

2

Bâtiment 2

48

3

Facilité 1

164,7

4

Parcelle 1

5

Chambre 1

23,6

6

Chambre 2

34,7

7

Chambre 3

19,8

Considéré la syntaxe Coalesce SQL, description, utilisation, et aller directement aux exemples.

Exemples d'utilisation

La syntaxe de l'expression Coalesce est simple,Cependant, il est important de se rappeler que le résultat de la commande sera la valeur FIRST non vide trouvée dans la liste des arguments. Cette remarque est très importante et les arguments de l'expression doivent être classés par ordre d'importance. La manière la plus simple de comprendre le principe de l'espace table. Faites une demande qui sélectionne le nom de la propriété, ainsi que la valeur de la zone:

SELECT Area.id, Area.object_name, coalesce (Area.area_yt, Area.area_decl)

DE la zone

Et obtenez le résultat:

identifiant

nom_objet

Coalesce

1

Bâtiment 1

116,2

2

Construction en cours 1

568

3

Chambre 1

64,7

4

Chambre 2

34,2

5

Parcelle 1

112

6

Facilité 1

7

Chambre 3

27,9

8

Facilité 2

37,2

9

Bâtiment 2

Pour «Bâtiment 1», «Terrain 1» et“Construction 2” les deux zones ont été renseignées, mais la zone s’est avérée prioritaire, comme nous l’avions indiqué dans la première liste d’arguments. L'expression Coalesce a trouvé la première valeur non vide et l'a dérivée, interrompant ainsi l'affichage des arguments. Cette construction de la demande est correcte, car la zone spécifiée est plus spécifique que celle déclarée. Si nous spécifions la surface déclarée comme premier argument, alors si ce champ de table était rempli, il aurait été prioritaire.

En plus d’utiliser in Select, très souventLa coalesce est appliquée avec une clause where. Cela vous permet de couper du résultat les lignes dans lesquelles les valeurs de la liste de champs sont vides (ou inversement, n'inclure dans le résultat que les valeurs pour lesquelles la liste de champs n'est pas renseignée). Cette situation est omniprésente: par exemple, dans l’entreprise, lors de l’enregistrement d’un nouvel employé, seules les informations de base le concernant ont été entrées dans la base de données et les informations détaillées ont été laissées «pour plus tard». Progressivement, des "lacunes" apparaissent - soit avant le contrôle, soit lors de l'envoi d'un employé en vacances / voyage d'affaires / congé de maladie.

Sélectionnez dans le tableau avec les principales caractéristiques de l'immobilier, qui n'est rempli avec aucune des valeurs des caractéristiques:

SELECT id, nom_objet

FROM Basic_characteristic

Où coalesce (extension, profondeur, surface, portée, hauteur) est nul

Pour cette requête, il y a une correspondance dans la table - l'objet "Land plot 1", dans lequel tous les champs avec des caractéristiques sont vides:

identifiant

nom_objet

4

Parcelle 1

fonctionnalités de coalesce SQL

Nous espérons que notre description détaillée de Coalesce sql vous a aidé à comprendre toutes les fonctionnalités d'utilisation de cette expression, ainsi qu'à gérer les nuances importantes.