問題:
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
で表示されます。 。