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

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

Susan Sarandon
풀어 주다: 2024-12-27 08:29:10
원래의
209명이 탐색했습니다.

How to Dynamically Update a Table Based on Split Date Ranges and Set Names Using a Case Statement?

주어진 문자열 분할 및 사례문 준비

특정 날짜 범위와 해당 집합 이름을 기반으로 테이블을 효율적으로 업데이트하려면 분할이 필요합니다. 주어진 문자열을 개별 구성요소로 동적으로 변환합니다. 이 접근 방식을 사용하면 가변 입력 매개변수를 처리할 수 있고 업데이트 작업의 유연성이 보장됩니다.

날짜 범위 및 이름 설정 분할

  1. 날짜 분할 범위:

    • p_dates 매개변수 분할 쉼표(,)를 구분 기호로 사용합니다. 이렇게 하면 "start_date to end_date" 형식의 날짜 범위 배열이 생성됩니다.
    SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
    로그인 후 복사
  2. 분할 세트 이름:

    • 마찬가지로 쉼표(,)를 사용하여 p_sets 매개변수를 분할합니다. 구분 기호. 그러면 집합 이름의 배열이 생성됩니다.
    SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
    로그인 후 복사

동적 사례 설명 준비

날짜 범위와 집합이 끝나면 이름이 분할되면 다음을 사용하여 동적 Case 문을 구성할 수 있습니다. 단계:

  1. 날짜 범위를 통한 반복:

    • 날짜 범위 배열을 반복합니다.
  2. 범위 추출 경계:

    • split_part를 사용하여 각 범위에서 시작 및 종료 날짜를 추출하고 구분 기호를 "to"로 지정합니다.
  3. 빌드 케이스 절:

    • 각 날짜 범위에 대해 update table_name set set_name을 사용하여 해당 세트 이름을 업데이트합니다.
    • 날짜 범위를 기준으로 행을 필터링하려면 BETWEEN 조건을 사용하세요. .

다음 코드 조각은 동적 사례 문 준비:

PREPARE upd_tbl AS
UPDATE table_name
SET    set_name = CASE
  WHEN given_date BETWEEN split_part(, 'to', 1)::date
                       AND split_part(, 'to', 2)::date THEN 
  ELSE null
END;
로그인 후 복사

여기서:

  • $1은 날짜 범위에 대한 자리 표시자입니다.
  • $2는 해당 세트 이름에 대한 자리 표시자입니다. .

date_range 및 set_name을 매개변수로 사용하여 준비된 명령문을 실행하면 테이블을 다음과 같이 만들 수 있습니다. 지정된 날짜 범위 및 세트 이름을 기반으로 업데이트되었습니다.

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

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