0

特定の列に余分なデータがある Postgres データベース テーブルにレコードがあります。その列からそのテキスト以外のすべてを選択したい。そのテキストは、列のデータの最後にあります。そのテキストが product_name の前または途中にある場合は、削除しないでください。

selectステートメントを作成するにはどうすればよいですか? 以下はデータで、結果セットから「test2」という単語を削除したいと考えています。

id|product_name    |owner
---------------------
12|sissors test2   |23
13|Sample test2    |43
14|test2scoop test2   |43
4

3 に答える 3

2

次のようなものが機能するはずです。

SELECT id, replace(product_name, 'test3', '') AS product_name, owner FROM ...
于 2013-04-14T23:58:04.440 に答える
2

文字列関数に関する PostgreSQL マニュアルのセクションは何を示唆していますか?

regexp_replace(string text, pattern text, replacement text [, flags text])

POSIX 正規表現に一致する部分文字列を置き換えます。詳細については、セクション 9.7.3 を参照してください。

regexp_replace('Thomas', '.[mN]a.', 'M')

したがって:

SELECT id, regex_replace(product_name, 'test3', '') AS product_name, owner
  FROM data -- since the table is anonymous in the question

そして、それは複雑なものreplaceです — ストレート テキスト マッピング (マニュアル ページの関数のリストの少し先) もあり、当面のタスクには十分です。

SELECT id, replace(product_name, 'test3', '') AS product_name, owner
  FROM data -- since the table is anonymous in the question
于 2013-04-14T23:59:52.077 に答える
1

私はあなたが何を望んでいるのかを推測していますが、おそらくこれでうまくいくでしょう:

select id
     , replace(product_name,' test2,'') as product_name
     , owner
from my_table

また、「test3」ではなく「test2」を意味していたと思います。

また、検索文字列の先頭に空白が表示されていることにも注意してください。これは、提供されたサンプル データに基づいています。

于 2013-04-14T23:59:54.277 に答える