> 데이터 베이스 > 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
로그인 후 복사

이 쿼리는 두 테이블(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿