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 サイトの他の関連記事を参照してください。