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