Maison > base de données > tutoriel mysql > Comment remplacer les valeurs NULL dans SQL par la dernière valeur non NULL connue ?

Comment remplacer les valeurs NULL dans SQL par la dernière valeur non NULL connue ?

Susan Sarandon
Libérer: 2025-01-03 16:32:40
original
805 Les gens l'ont consulté

How to Replace NULL Values in SQL with the Last Known Non-NULL Value?

Gestion des valeurs nulles dans SQL : remplacement des valeurs nulles par des valeurs connues précédentes

Un défi courant dans l'utilisation de bases de données SQL consiste à rencontrer des valeurs nulles, qui peuvent représenter des données manquantes ou inconnues. Pour garantir l'intégrité des données et l'exactitude de l'analyse, il est essentiel de gérer les valeurs nulles de manière appropriée.

Énoncé du problème :

Considérons un tableau avec deux colonnes : date et numéro, où certains les lignes ont des valeurs nulles dans la colonne numérique. L'objectif est de remplacer ces valeurs nulles par des valeurs extraites de la dernière valeur non nulle connue dans la ligne de date précédente.

Solution :

Pour les utilisateurs de SQL Server, la requête suivante peut être utilisé :

DECLARE @Table TABLE(
        ID INT,
        Val INT
)

INSERT INTO @Table (ID,Val) SELECT 1, 3
INSERT INTO @Table (ID,Val) SELECT 2, NULL
INSERT INTO @Table (ID,Val) SELECT 3, 5
INSERT INTO @Table (ID,Val) SELECT 4, NULL
INSERT INTO @Table (ID,Val) SELECT 5, NULL
INSERT INTO @Table (ID,Val) SELECT 6, 2


SELECT  *,
        ISNULL(Val, (SELECT TOP 1 Val FROM @Table WHERE ID < t.ID AND Val IS NOT NULL ORDER BY ID DESC))
FROM    @Table t
Copier après la connexion

Explication :

  • Créez une table temporaire @Table pour stocker les exemples de données.
  • Utilisez ISNULL( ) fonction pour vérifier si Val est nul. Si tel est le cas, la sous-requête TOP 1 est exécutée pour récupérer la dernière valeur non nulle connue pour cette date.
  • La sous-requête filtre la table pour les lignes avec un ID inférieur à la ligne actuelle et les valeurs Val non nulles. , puis les classe par ordre décroissant par ID pour obtenir la valeur la plus récente.
  • Le résultat final inclut toutes les lignes avec le numéro d'origine ou remplacé. valeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal