指定された文字列の分割
p_dates で表される指定された日付を分割するには、正規表現を使用して括弧内の日付範囲を抽出します。例:
SELECT string_to_array(p_dates, '[,]+') AS dates;
指定されたセットの分割
同様の正規表現を使用して、区切り文字としてカンマを使用して p_sets 内のセットを分割します。
SELECT string_to_array(p_sets, '[,]+') AS sets;
動的ケースの準備ステートメント
分割された日付とセットを使用して、ループを使用して動的 case ステートメントを構築します。
DECLARE dates CHAR[], sets CHAR[]; BEGIN -- Get split dates and sets SELECT * INTO dates, sets FROM ( SELECT string_to_array(p_dates, '[,]+') AS dates, string_to_array(p_sets, '[,]+') AS sets ); -- Loop through each pair of date range and set FOR i IN 1..ARRAY_UPPER(sets) LOOP -- Construct CASE statement CASE WHEN given_dates BETWEEN split_part(dates[i], 'to', 1) AND split_part(dates[i], 'to', 2) THEN sets[i] END END CASE; END;
これにより、日付に基づいてセット名を割り当てる動的 CASE ステートメントが生成されます。範囲。
以上がSQL の日付範囲に基づいてセット名を動的に割り当てる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。