ホームページ > データベース > mysql チュートリアル > SQL Server クエリで NULL 値を処理し、0 に置き換える方法

SQL Server クエリで NULL 値を処理し、0 に置き換える方法

Mary-Kate Olsen
リリース: 2025-01-01 06:10:10
オリジナル
246 人が閲覧しました

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

SQL Server クエリでの NULL 値の処理: 0 への置換

SQL Server データベースを使用する場合、クエリ結果で NULL 値が発生する可能性があります。データ分析の妨げになります。たとえば、次のクエリについて考えてみましょう。

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
ログイン後にコピー

このクエリは 2 つのテーブル (sysjobs と sysjobhistory) からデータを取得し、runstatus 列に基づいて計算を実行します。ただし、runstatus に NULL 値が含まれる場合、クエリは予期しない結果を返す可能性があります。

NULL を 0 に置き換える

SQL Server で NULL 値を 0 に置き換えるには、isnull を使用します。 () 関数。この関数は、入力値が NULL の場合は指定された値を返します。それ以外の場合は、入力値を返します。

isnull(myColumn, 0)
ログイン後にコピー

指定されたクエリでは、c.runstatus に NULL 値が含まれる場合があります。これらの値を 0 に置き換えるには、クエリを次のように変更します。

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
ログイン後にコピー

isnull() を使用すると、計算を実行する前に c.runstatus の NULL 値が 0 に置き換えられます。これにより、データが欠落している場合でも、クエリは正確な結果を返すことが保証されます。

以上がSQL Server クエリで NULL 値を処理し、0 に置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート