首頁 >資料庫 >mysql教程 >如何使用 Case 語句根據日期範圍動態更新表的集名稱?

如何使用 Case 語句根據日期範圍動態更新表的集名稱?

Patricia Arquette
Patricia Arquette原創
2024-12-29 13:39:11477瀏覽

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

使用分割日期和集合更新的動態案例語句

問題:

問題:

給定兩個參數p_dates 和p_sets,分別包含日期範圍和集合名稱,目標是準備一條動態SQL case語句,根據給定的日期範圍使用適當的集名稱更新表的 set_name 欄位。

解決方案:

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

1.分割日期:

要將p_dates 參數分割為各個日期範圍,請使用string_to_array() 函數並以逗號(,)作為分隔符號:

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

2.分割集:

類似地,要將p_sets 參數分割為單獨的集名稱,請使用相同的技術:

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

3。準備動態 Case 語句:

使用分割日期和集合,將它們動態連接成一個 case 語句:

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;

實現:

要更新table_name表,請使用以下SQL語句:

好處:這種動態方法允許根據更改的參數進行靈活更新,消除了靜態case 語句的需要,並提供了更通用的解決方案用於日期範圍和設定操作。

以上是如何使用 Case 語句根據日期範圍動態更新表的集名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn