Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Nilai NULL dalam Pertanyaan SQL Server dan Menggantikannya dengan 0?

Bagaimana Mengendalikan Nilai NULL dalam Pertanyaan SQL Server dan Menggantikannya dengan 0?

Mary-Kate Olsen
Lepaskan: 2025-01-01 06:10:10
asal
246 orang telah melayarinya

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

Berurusan dengan Nilai NULL dalam Pertanyaan SQL Server: Menggantikan dengan 0

Apabila bekerja dengan pangkalan data SQL Server, menemui nilai NULL dalam hasil pertanyaan boleh menghalang analisis data. Sebagai contoh, pertimbangkan pertanyaan berikut:

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
Salin selepas log masuk

Pertanyaan ini mendapatkan semula data daripada dua jadual (sysjobs dan sysjobhistory) dan melakukan pengiraan berdasarkan lajur runstatus. Walau bagaimanapun, jika runstatus mempunyai nilai NULL, pertanyaan mungkin mengembalikan hasil yang tidak dijangka.

Menggantikan NULL dengan 0

Untuk menggantikan nilai NULL dengan 0 dalam SQL Server, gunakan isnull () fungsi. Fungsi ini mengembalikan nilai yang ditentukan jika nilai input adalah NULL; jika tidak, ia mengembalikan nilai input.

isnull(myColumn, 0)
Salin selepas log masuk

Dalam pertanyaan yang diberikan, c.runstatus mungkin mempunyai nilai NULL. Untuk menggantikan nilai ini dengan 0, ubah suai pertanyaan seperti berikut:

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
Salin selepas log masuk

Dengan menggunakan isnull(), nilai NULL dalam c.runstatus digantikan dengan 0 sebelum melakukan pengiraan. Ini memastikan bahawa pertanyaan mengembalikan hasil yang tepat walaupun terdapat data yang hilang.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai NULL dalam Pertanyaan SQL Server dan Menggantikannya dengan 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan