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

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

Susan Sarandon
Susan Sarandon원래의
2024-12-27 08:29:10243검색

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

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