>데이터 베이스 >MySQL 튜토리얼 >Case 문을 사용하여 날짜 범위를 기반으로 테이블 세트 이름을 동적으로 업데이트하는 방법은 무엇입니까?

Case 문을 사용하여 날짜 범위를 기반으로 테이블 세트 이름을 동적으로 업데이트하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-29 13:39:11455검색

How to Dynamically Update a Table's Set Name Based on Date Ranges Using a Case Statement?

분할 날짜 및 세트를 사용한 업데이트를 위한 동적 Case 문

문제:

두 개가 주어졌습니다. 각각 날짜 범위와 세트 이름을 포함하는 매개변수 p_dates 및 p_sets의 목표는 다음과 같습니다. 주어진 날짜 범위를 기반으로 적절한 세트 이름으로 테이블의 set_name 열을 업데이트하는 동적 SQL Case 문을 준비합니다.

해결책:

1. 날짜 분할:

p_dates 매개변수를 개별 날짜 범위로 분할하려면 쉼표(,)를 구분 기호로 사용하여 string_to_array() 함수를 사용하십시오.

SELECT unnest(string_to_array(p_dates, ',')) AS date_range;

2. 세트 분할:

마찬가지로 p_sets 매개변수를 개별 세트 이름으로 분할하려면 동일한 기술을 사용합니다:

SELECT unnest(string_to_array(p_sets, ',')) AS set_name;

3. 동적 Case 문 준비:

분할된 날짜와 집합을 사용하여 동적으로 Case 문으로 연결합니다.

CASE
  WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date
                     AND split_part(date_range, 'to', 2)::date
  THEN set_name
  ELSE NULL
END

구현:

table_name 테이블을 업데이트하려면 다음 SQL을 사용하세요. 설명:

UPDATE table_name
SET set_name = (
  CASE
    WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date
                           AND split_part(date_range, 'to', 2)::date
    THEN set_name
    ELSE NULL
  END
)
FROM split_dates
JOIN split_sets
  ON 1 = 1;

이점:

이 동적 접근 방식을 사용하면 매개변수 변경에 따라 유연한 업데이트가 가능하므로 정적 사례 설명이 필요하지 않으며 보다 다양한 솔루션을 제공할 수 있습니다. 날짜 범위 및 세트 조작을 위해.

위 내용은 Case 문을 사용하여 날짜 범위를 기반으로 테이블 세트 이름을 동적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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