PostgreSQL - サブストリング(特定の単語)の後にセルコンテンツを新しい列に分割する方法 -- postgresql フィールド 関連 問題

PostgreSQL - How to split a cell content after a sub-string (a specific word) into a new column












0
vote

問題

日本語

現在、2つの特定の文字列を含むPostgreSQLデータベースを持っています。一意の単語と固有の単語2.ユニークな単語を含む固有の単語2の後に列Aセル、およびそれに続くデータ2が新しい列に分割したいです。同じ行に(b)。

それを達成するためのSQLクエリとは何ですか?このような50kの行があります。

列a (以下のデータはすべて文字列として1セル内です)

ユニークな単語:

  • データ

  • データ

ユニークな単語2:

  • データ2

  • データ2

英語

I currently have a PostgreSQL database which contains two specific strings: Unique Word and Unique Word 2. I want to split Column A cells after the Unique Word 2, including the Unique Word, and Data 2 that follows it into a new column (Column B) in the same row.

What would be the SQL query to accomplish that? There are over 50k rows like this.

Column A (the following data is all in 1 cell as a string)

Unique Word:

  • Data

  • Data

Unique Word 2:

  • Data 2

  • Data 2

</div
  
   
   

回答リスト

0
 
vote

db&lt; fiddle

これらのデータがあなたのケースを表すことができると仮定して:

<事前> <コード> try { if (1 === $foo) { throw new Exception(sprintf('Invalid foo: %s', serialize($foo)), 1); } if (2 === $bar) { throw new Exception(sprintf('Invalid bar: %s', serialize($foo)), 2); } } catch (Exception $e) { switch ($e->getCode()) { case 1: // Special handling for case 1 break; case 2: // Special handling for case 2 break; default: // Special handling for all other cases } } 2

このクエリは、2番目の固有の単語でテキストを2つの部分に分割します。 2番目の部分は、2番目のユニークな単語の後ろのすべてであり、最初は以前はすべてです。最初の部分から、最初の固有の単語を削除することができます(空の文字列に置き換えます)。

<事前> <コード> try { if (1 === $foo) { throw new Exception(sprintf('Invalid foo: %s', serialize($foo)), 1); } if (2 === $bar) { throw new Exception(sprintf('Invalid bar: %s', serialize($foo)), 2); } } catch (Exception $e) { switch ($e->getCode()) { case 1: // Special handling for case 1 break; case 2: // Special handling for case 2 break; default: // Special handling for all other cases } } 3

結果:

<事前> <コード> try { if (1 === $foo) { throw new Exception(sprintf('Invalid foo: %s', serialize($foo)), 1); } if (2 === $bar) { throw new Exception(sprintf('Invalid bar: %s', serialize($foo)), 2); } } catch (Exception $e) { switch ($e->getCode()) { case 1: // Special handling for case 1 break; case 2: // Special handling for case 2 break; default: // Special handling for all other cases } } 4
 

db<>fiddle

Assuming these data could represent your cases:

'UNIQUE_WORD_1 Lorem ipsum dolor sit UNIQUE_WORD_2 amet, consetetur sadipscing elitr', 'UNIQUE_WORD_1 sed diam nonumy eirmod tempor invidunt ut UNIQUE_WORD_2 labore et dolore magna', 'UNIQUE_WORD_1 aliquyam erat, sed diam voluptua. UNIQUE_WORD_2 aliquyam erat, sed diam voluptua. At vero eos' 

This query splits the text at the second unique word into two parts. The second part is everything behind the second unique word, the first is everything before. From the first part, the first unique word can be deleted (replace with empty string):

SELECT     replace(text_parts[1], 'UNIQUE_WORD_1', '') as first_part,     text_parts[2] as second_part FROM (     SELECT          regexp_split_to_array(texts, 'UNIQUE_WORD_2') as text_parts      FROM test_data) s 

Result:

first_part                                   second_part -----------------------------------------    --------------------------------------------- Lorem ipsum dolor sit                        amet, consetetur sadipscing elitr sed diam nonumy eirmod tempor invidunt ut    labore et dolore magna aliquyam erat, sed diam voluptua.            aliquyam erat, sed diam voluptua. At vero eos 
</div
 
 

関連する質問

6  レール内の複数のデータベース接続  ( Multiple database connection in rails ) 
Railsで複数接続するためにActive_Delegateを使用しています。ここではMySQLをMASTER_DATABASEとしてMASTER_DATABASEを使用しています。また、他のモデルのPostgreSQL。 問題MySQLモデルにアクセスしよ...

2  クローニング階層データ  ( Cloning hierarchical data ) 
自己参照階層テーブルを持っていると仮定しましょうこのような古典的な方法を構築する: <事前> <コード> CREATE TABLE test (name text,id serial primary key,parent_id integer referenc...

7  シンプルなテーブルデザイン質問  ( Simple table design question ) 
私は少し前に考えて、可能であればいくつかの追加の痛みを避けようとしています。 過去のアプリケーションでこの問題を抱えており、通常は最も冗長なアプローチを選択しましたが、他のいくつかの意見をお願いします。 下記の基本テーブルを持っている場合は、他の2つの列から見...

118  PostgreSQLの文字列リテラルとエスケープ文字  ( String literals and escape characters in postgresql ) 
エスケープ文字をテーブルに挿入しようとすると、警告が発生します。 例えば: <事前> <コード> create table EscapeTest (text varchar(50)); insert into EscapeTest (text) value...

4  SQL SPECは2セットの排他的または排他的な屋根リングをするためのより良い方法を提供しますか?  ( Does the sql spec provide for a better way to do a exclusive oring of two sets ) 
私は10行1-10 <コード> {1,2,3,4,5,6,7,8,9,10} 、 A 、 A 、 A がEvens 1-で構成されています。 20 <コード> {2,4,6,8,10,12,14,16,18,20} 。私は一組の要素を見つけたいが両方ではありま...

2  PostgreSQL Serverで接続の試行が失敗しました  ( Connection attempt failed in postgresql server ) 
プロジェクトでは、データベースサーバとしてPostgreSSQL(8.3)を使用していますが、対面しています 問題(一度に一度)。ログファイルでは、のようなエラーが発生しています <事前> <コード> ****Connection attempt ...

2  データの詳細は、より良い方法である必要があります  ( Paginating data has to be a better way ) 
私は10程度の「チュートリアル」のように読んでいて、それらはすべて同じことを含みます: データ・セットの数を引く 関連データ・セット(制限、オフセット)を引きます IE: <事前> <コード> SELECT COUNT(*) FROM table ...

3  SQL列の「CAMPACTION_ $」は不良ですか?  ( Is campaign a bad name for a sql column ) 
PostgreSQLでは、 "Campaign_ $"の列に名前を付けることができました。私はそれが短くてポイントになるので名前が好きで、 "campaign_receipps"のような他の潜在的な名前は長く、明確に見えます。 しかし、PHPまたはアーキテク...

7  PostgreSQLのプロファイリング  ( Profiling postgresql ) 
PostgreSQL-Bastedアプリケーションを調査しています。 CPU使用率は、4GBのRAMを搭載した現代のXeonでは絶えず50%以上です。その50%のCPU使用率のうち、67%が「USER」で、33%が「システム」です(これはLinuxマシンで...

39  PythonとMySQL  ( Python and mysql ) 
PostgreSQLを操作するようにPythonを取得することができますが、MySQLで動作することはできません。主な問題は、私がDjangoやPysqlなどのものをインストールする機能を持っていない共有ホスティングアカウントでは、私のコンピュータにインスト...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有