>데이터 베이스 >MySQL 튜토리얼 >SQL의 WHERE 절에서 조건부 논리(IF/CASE)를 어떻게 사용할 수 있습니까?

SQL의 WHERE 절에서 조건부 논리(IF/CASE)를 어떻게 사용할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-11 05:59:52935검색

How Can I Use Conditional Logic (IF/CASE) in SQL's WHERE Clause?

SQL WHERE 절의 동적 데이터 필터링

SQL은 IF 절 내의 WHERE 문을 직접 지원하지 않지만 대체 방법을 사용하여 조건부 필터링을 구현할 수 있습니다. 이를 통해 특정 조건에 따라 유연한 데이터 검색이 가능합니다.

CASE 진술 접근 방식:

CASE 문은 데이터를 조건부로 필터링하는 강력한 방법을 제공합니다. 조건을 평가하고 결과에 따라 값을 반환합니다. WHERE 절 내에서는 다음과 같습니다.

<code class="language-sql">WHERE field LIKE CASE
  WHEN condition THEN result
  ELSE result
END</code>

예를 들어 @OrderNumber이 숫자인지 여부를 기준으로 필터링한다고 가정해 보겠습니다. 숫자인 경우 정확한 일치를 사용합니다. 그렇지 않으면 와일드카드 검색을 사용하세요.

<code class="language-sql">WHERE OrderNumber LIKE
  CASE WHEN IsNumeric(@OrderNumber) = 1 THEN 
    @OrderNumber 
  ELSE
    '%' + @OrderNumber + '%'
  END</code>

IF를 사용한 조건부 할당(절차적 접근 방식):

또 다른 방법은 WHERE 절 외부에서 조건부 할당을 사용하여 필터링 값을 준비하는 것입니다. 이는 보다 절차적인 접근 방식입니다.

<code class="language-sql">IF condition
  SET field = value;
ELSE
  SET field = value;</code>

이를 @OrderNumber 예시에 적용:

<code class="language-sql">IF IsNumeric(@OrderNumber) = 1
  SET @OrderNumber_Filtered = @OrderNumber;
ELSE
  SET @OrderNumber_Filtered = '%' + @OrderNumber + '%';</code>

그런 다음 @OrderNumber_Filtered 절에 WHERE을 사용하세요.

<code class="language-sql">WHERE OrderNumber LIKE @OrderNumber_Filtered;</code>

CASE 절 내의 WHEREWHERE 절 앞의 조건부 할당은 모두 데이터 필터링을 위한 조건부 논리를 구현하는 효과적인 방법을 제공하여 SQL 쿼리의 성능과 적응성을 향상시킵니다.

위 내용은 SQL의 WHERE 절에서 조건부 논리(IF/CASE)를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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