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

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

Patricia Arquette
發布: 2024-12-29 13:39:11
原創
478 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板