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

PostgreSQLで文字列を分割する方法

    問題:

    PostgreSQLで文字列を分割したい。

    例1:

    文があり、それをスペース文字で分割したい。

    ソリューション1:

    SELECT unnest(
      string_to_array('It''s an example sentence.', ' ')
    ) AS parts;
    

    結果は次のようになります:

    パーツ
    それは
    an
    文。

    ディスカッション:

    文のす​​べての部分をPostgreSQLの配列の要素として取得するには、string_to_array(text、delimiter)関数を使用します。テキストは分割するテキストであり、区切り文字はテキストを分割する文字列(ここではスペース)です。 string_to_array(text, delimiter)の簡単な使用法 機能:

    SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
    

    次の結果が返されます:

    パーツ
    {It's、an、example、sentence。}
    SELECT unnest(
      string_to_array('It''s an example sentence.', ' ')
    ) AS parts;
    

    これにより、すべての文字列部分がそれぞれ別々の行にある列が生成されます。

    例2:

    sentences 表、いくつかの文があります。

    これは最初の文です。
    そしてこれがもう1つです。

    文をスペース文字で分割したい。

    ソリューション2:

    SELECT unnest(string_to_array(sentence, ' ')) AS parts
    FROM sentences;
    

    結果は次のようになります:

    パーツ
    これ
    the
    最初
    文。
    そして
    こちら
    the
    その他
    1つ。

    ディスカッション:

    前の例と同様に、string_to_array(text、delimiter)関数とunnest(array)関数を使用します。テキストは列名(文)である必要がありますが、区切り文字はスペース('')のままです。今回はテーブルのデータを使用するため、テーブル名と一緒にFROMキーワードを使用する必要があります。

    SELECT unnest(string_to_array(sentence, ' ')) AS parts
    FROM sentences;
    

    例3:

    sentences テーブルには、2つの列があります:id およびsentence

    id
    1 これは最初の文です。
    2 そしてこれがもう1つです。

    文をスペース文字で分割したい。

    ソリューション3:

    SELECT
      id,
      unnest(string_to_array(sentence, ' ')) AS parts
    FROM sentences;
    

    結果は次のようになります:

    id パーツ
    1 これ
    1
    1
    1 最初
    1 文。
    2 そして
    2 こちら
    2
    2 その他
    2 1つ。

    ディスカッション:

    この例は非常に似ていますが、idも確認する必要があります 桁。この列を表示するには、SELECTに追加するだけです。 リストし、コンマを含めることを忘れないでください。結果には、文のIDと文の部分が表示されます。たとえば、最初の文は5つの部分に分割され、IDは1です。 。したがって、結果の5つの部分すべてのIDは1になります。 。 ID 2の次の文 、も5つの部分に分割され、これらの各部分はid = 2で表示されます。 。


    1. OLE DBソースコンポーネントのストアドプロシージャパラメータに値を渡すにはどうすればよいですか?

    2. MS Accessの破損パート2:予防と回復のためのベストプラクティス

    3. JSON_TYPE()–MySQLでJSON値のタイプを取得します

    4. SQLServerデータベース名の変更