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

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

Patricia Arquette
풀어 주다: 2024-12-29 13:39:11
원래의
481명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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