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

PostgreSQLで配列の要素を削除するにはどうすればよいですか?

    unnest()を使用する array_agg()を使用 例:

    with cte(array1, array2) as (
        values (array[1,2,3,4], array[1,4])
        )
    select array_agg(elem)
    from cte, unnest(array1) elem
    where elem <> all(array2);
    
     array_agg 
    -----------
     {2,3}
    (1 row)
    

    この機能が頻繁に必要な場合は、次の単純な関数を定義してください。

    create or replace function array_diff(array1 anyarray, array2 anyarray)
    returns anyarray language sql immutable as $$
        select coalesce(array_agg(elem), '{}')
        from unnest(array1) elem
        where elem <> all(array2)
    $$;
    

    この関数は、int[]だけでなく、任意の配列に使用できます。 :

    select array_diff(array['a','b','c','d'], array['a','d']);
    
     array_diff 
    ------------
     {b,c}
    (1 row) 
    


    1. クエリのパフォーマンスの違いpl/sqlforallinsertとplainSQLinsert

    2. SQL Server履歴テーブル-SPまたはトリガーを介してデータを入力しますか?

    3. gormの構造体にネストされたオブジェクトを取得する

    4. 特定の制限を超えると、MySQLレコードは返されませんか?