>데이터 베이스 >MySQL 튜토리얼 >조건부 필터링을 위해 SQL WHERE 절에서 CASE 문을 어떻게 사용할 수 있습니까?

조건부 필터링을 위해 SQL WHERE 절에서 CASE 문을 어떻게 사용할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-10 06:20:41193검색

How Can I Use a CASE Statement in a SQL WHERE Clause for Conditional Filtering?

SQL의 WHERE 절에 대한 Switch/Case 문

쿼리문:

다음 쿼리는 WHERE 절의 CASE 문을 사용하여 @locationType 및 @locationID 값을 기준으로 필터링하려고 시도합니다.

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location = @locationID
    WHEN 'area' THEN xxx_location_area = @locationID
    WHEN 'division' THEN xxx_location_division = @locationID
END;</code>

오류:

CASE 표현식은 단일 반환 값을 기대하므로 이 쿼리에서는 구문 오류가 발생합니다. 다양한 WHEN 절에 CASE 표현식이 아닌 동등 비교(= @locationID)가 잘못 포함되었습니다.

해결책:

WHERE 절에서 CASE 문을 사용하는 올바른 구문은 대상 열에 표현식을 할당하는 것입니다.

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area
      WHEN 'division' THEN xxx_location_division
  END;</code>

이 수정된 쿼리에서 CASE 표현식은 @locationType 값을 기반으로 해당 위치 식별자를 반환합니다. 그런 다음 WHERE 절은 이 값을 @locationID와 비교하여 예상대로 결과를 필터링합니다.

위 내용은 조건부 필터링을 위해 SQL WHERE 절에서 CASE 문을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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