Maison > base de données > tutoriel mysql > Comment gérer les valeurs NULL dans les requêtes SQL Server et les remplacer par 0 ?

Comment gérer les valeurs NULL dans les requêtes SQL Server et les remplacer par 0 ?

Mary-Kate Olsen
Libérer: 2025-01-01 06:10:10
original
246 Les gens l'ont consulté

How to Handle NULL Values in SQL Server Queries and Replace Them with 0?

Traitement des valeurs NULL dans les requêtes SQL Server : remplacement par 0

Lorsque vous travaillez avec des bases de données SQL Server, la rencontre de valeurs NULL dans les résultats des requêtes peut gêner l’analyse des données. Par exemple, considérons la requête suivante :

Select c.rundate,
    sum(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,
    sum(case when c.runstatus = 'Failed' then 1 end) as Failed,
    sum(case when c.runstatus = 'Cancelled' then 1 end) as Cancelled,
    count(*) as Totalrun
from
    (Select a.name,
        case when b.run_status = 0 Then 'Failed'
            when b.run_status = 1 Then 'Succeeded'
            when b.run_status = 2 Then 'Retry'
            Else 'Cancelled'
        End as Runstatus,
        cast(substring(convert(varchar(8), run_date), 1, 4) + '/' + substring(convert(varchar(8), run_date), 5, 2) + '/' + substring(convert(varchar(8), run_date), 7, 2) as Datetime) as RunDate
    from msdb.dbo.sysjobs as a(nolock) inner join msdb.dbo.sysjobhistory as b(nolock)
    on a.job_id = b.job_id
    where a.name = 'AI'
    and b.step_id = 0) as c
group by
    c.rundate
Copier après la connexion

Cette requête récupère les données de deux tables (sysjobs et sysjobhistory) et effectue des calculs basés sur la colonne runstatus. Cependant, si runstatus a des valeurs NULL, la requête peut renvoyer des résultats inattendus.

Remplacement de NULL par 0

Pour remplacer les valeurs NULL par 0 dans SQL Server, utilisez isnull () fonction. Cette fonction renvoie la valeur spécifiée si la valeur d'entrée est NULL ; sinon, il renvoie la valeur d'entrée.

isnull(myColumn, 0)
Copier après la connexion

Dans la requête donnée, c.runstatus peut avoir des valeurs NULL. Pour remplacer ces valeurs par 0, modifiez la requête comme suit :

Select c.rundate,
    sum(case when isnull(c.runstatus, 0) = 'Succeeded' then 1 end) as Succeeded,
    sum(case when isnull(c.runstatus, 0) = 'Failed' then 1 end) as Failed,
    sum(case when isnull(c.runstatus, 0) = 'Cancelled' then 1 end) as Cancelled,
    count(*) as Totalrun
from
    (Select a.name,
        case when b.run_status = 0 Then 'Failed'
            when b.run_status = 1 Then 'Succeeded'
            when b.run_status = 2 Then 'Retry'
            Else 'Cancelled'
        End as Runstatus,
        cast(substring(convert(varchar(8), run_date), 1, 4) + '/' + substring(convert(varchar(8), run_date), 5, 2) + '/' + substring(convert(varchar(8), run_date), 7, 2) as Datetime) as RunDate
    from msdb.dbo.sysjobs as a(nolock) inner join msdb.dbo.sysjobhistory as b(nolock)
    on a.job_id = b.job_id
    where a.name = 'AI'
    and b.step_id = 0) as c
group by
    c.rundate
Copier après la connexion

En utilisant isnull(), les valeurs NULL dans c.runstatus sont remplacées par 0 avant d'effectuer les calculs. Cela garantit que la requête renvoie des résultats précis même en présence de données manquantes.

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