>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 조건부 WHERE 절을 구현하는 방법은 무엇입니까?

SQL Server에서 조건부 WHERE 절을 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-18 10:56:10318검색

How to Implement Conditional WHERE Clauses in SQL Server?

SQL Server의 조건부 WHERE 절

SQL Server에서는 조건부 WHERE 절을 사용하여 특정 조건에 따라 데이터를 필터링하는 기준을 지정할 수 있습니다. 경우에 따라 조건을 평가하고 이에 따라 필터를 조정하기 위해 조건부 WHERE 절이 필요할 수 있습니다. 조건부 WHERE 절을 효과적으로 구성하고 사용하는 방법은 다음과 같습니다.

문법

기본 조건부 WHERE 절은 다음 구문을 따릅니다.

WHERE 逻辑表达式 AND (CASE WHEN 条件 THEN 表达式1 ELSE 表达式2 END)

제공하신 예를 살펴보겠습니다.

SELECT
    DateAppr,
    TimeAppr,
    ...
FROM
    [test].[dbo].[MM]
WHERE
    DateDropped = 0
    AND (CASE
            WHEN @JobsOnHold = 1 THEN DateAppr >= 0
            ELSE DateAppr != 0
        END)

이 쿼리는 DateDropped가 0이고 DateAppr이 @JobsOnHold 값을 기반으로 특정 조건을 충족하는 데이터를 필터링하려고 시도합니다. 그러나 구문이 올바르지 않습니다.

올바른 문법

구문 오류를 수정하려면 조건식을 괄호로 묶으세요.

SELECT
    DateAppr,
    TimeAppr,
    ...
FROM
    [test].[dbo].[MM]
WHERE
    DateDropped = 0
    AND (
        (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0)
        OR
        (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0)
    )

설명

  • ISNULL(@JobsOnHold, 0): @JobsOnHold이 NULL이거나 누락된 경우 0으로 처리됩니다.
  • OR 연산자는 두 경우 모두 조건이 올바르게 작동하는지 확인합니다.

@JobsOnHold이 1인 경우 DateAppr는 0보다 크거나 같아야 합니다. 그렇지 않고 @JobsOnHold이 1이 아니면 DateAppr도 0이 아니어야 합니다.

기타 참고사항

  • 명확성을 높이기 위해 괄호를 사용하여 조건을 그룹화하고 우선순위를 지정합니다.
  • 표현 유형이 일치하는지 확인하세요.
  • 읽고 유지 관리하기 어려울 수 있으므로 중첩된 조건을 너무 많이 사용하지 마세요.

이러한 지침을 따르면 SQL Server에서 조건부 WHERE 절을 효과적으로 사용하여 특정 기준에 따라 데이터를 필터링할 수 있습니다.

위 내용은 SQL Server에서 조건부 WHERE 절을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.