Heim > Datenbank > MySQL-Tutorial > Wie gehe ich mit NULL-Werten in SQL Server-Abfragen um und ersetze sie durch 0?

Wie gehe ich mit NULL-Werten in SQL Server-Abfragen um und ersetze sie durch 0?

Mary-Kate Olsen
Freigeben: 2025-01-01 06:10:10
Original
246 Leute haben es durchsucht

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

Umgang mit NULL-Werten in SQL Server-Abfragen: Ersetzen durch 0

Bei der Arbeit mit SQL Server-Datenbanken können NULL-Werte in Abfrageergebnissen auftreten behindern die Datenanalyse. Betrachten Sie beispielsweise die folgende Abfrage:

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
Nach dem Login kopieren

Diese Abfrage ruft Daten aus zwei Tabellen (sysjobs und sysjobhistory) ab und führt Berechnungen basierend auf der runstatus-Spalte durch. Wenn runstatus jedoch NULL-Werte hat, kann die Abfrage unerwartete Ergebnisse zurückgeben.

NULL durch 0 ersetzen

Um NULL-Werte in SQL Server durch 0 zu ersetzen, verwenden Sie isnull ()-Funktion. Diese Funktion gibt den angegebenen Wert zurück, wenn der Eingabewert NULL ist; andernfalls wird der Eingabewert zurückgegeben.

isnull(myColumn, 0)
Nach dem Login kopieren

In der angegebenen Abfrage kann c.runstatus NULL-Werte haben. Um diese Werte durch 0 zu ersetzen, ändern Sie die Abfrage wie folgt:

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
Nach dem Login kopieren

Durch die Verwendung von isnull() werden NULL-Werte in c.runstatus durch 0 ersetzt, bevor Berechnungen durchgeführt werden. Dadurch wird sichergestellt, dass die Abfrage auch bei fehlenden Daten genaue Ergebnisse liefert.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Werten in SQL Server-Abfragen um und ersetze sie durch 0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage