sql >> データベース >  >> RDS >> PostgreSQL

PL/pgSQLでinteger[]を反復処理

    DO
    $do$
    DECLARE
       a integer[] := array[1,2,3];
       i integer;                      -- int, not bigint
    BEGIN
       FOR i IN 1 .. array_upper(a, 1)
       LOOP
          RAISE NOTICE '%', a[i];      -- single quotes
       END LOOP;
    END
    $do$;
    

    または、 FOREACHを使用すると簡単になります PostgreSQL 9.1以降の場合:

       FOREACH i IN ARRAY a
       LOOP 
          RAISE NOTICE '%', i;
       END LOOP;
    

    多次元配列については、以下を参照してください:

    • plpgsqlの配列次元をループします

    ただし、generate_series()を使用したセットベースのソリューション またはunnest() 多くの場合、大きなセットをループするよりも高速です。基本的な例:

    • PostgreSQL:度数分布表の拡張
    • 開始日と終了日の間の毎月を選択します

    タグgenerate-seriesまたはunnestで詳細を検索してください。




    1. Oracleのテーブルから偶数レコードを選択する方法は?

    2. FieldAから値を取得し、db関数に送信し、FieldBに値を返します

    3. SQLServerでスキーマバインドUDFを作成する

    4. Railsでの複数のデータベース接続