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

Postgresで列を複数の行に分割する

    Postgres 9.3以降では、LATERALを使用します 参加:

    SELECT s.token, flag
    FROM   tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
    WHERE  flag = 2;
    

    これは暗黙のLATERAL 加入。 unnest()の場合 行を返しません(空またはNULLのsubject )、結果はまったく行になりません。 LEFT JOIN unnest(...) i ON trueを使用します 常にtblから行を返す 。参照:

    • LATERAL JOINとPostgreSQLのサブクエリの違いは何ですか?

    regexp_split_to_table()を使用することもできます 、ただし、正規表現のマッチングには少しコストがかかるため、通常は遅くなります。関連:

    • テキストフィールドに部分文字列を含む行をSQL​​で選択
    • 要素番号付きのPostgreSQLunnest()


    1. JSONのPostgreSQLインデックス

    2. Django cache.set()が重複キーエラーを引き起こしている

    3. SQL Server(T-SQL)で日付から月の名前を取得する3つの方法

    4. varchar2(n BYTE | CHAR)デフォルト->CHARまたはBYTE