1

次の入力がある場合(引用符を除く):

「トランペッター白鳥の先祖代々の縄張り義務」

入力が次のように変換されるように、複数のスペースをすべて単一のスペースに折りたたむにはどうすればよいですか。

「トランペッター白鳥の先祖代々の縄張り義務」

これは、挿入/更新時のトリガー関数で使用されます (先頭/末尾のスペースは既に削除されています)。現在、入力に複数の隣接するスペースが含まれている場合は例外が発生しますが、挿入する前に単純に有効なものに変換したいと思います。

最善のアプローチは何ですか?PL/pgSQL の正規表現置換関数が見つからないようです。関数はありtext_replaceますが、これは最大で 2 つのスペースを 1 つに折りたたむだけです (3 つの連続するスペースが 2 つに折りたたまれることを意味します)。この関数を何度も呼び出すのは理想的ではありません。

4

2 に答える 2

2

PostgreSQL には、使用できるREGEXP_REPLACE関数があります。

DECLARE
  result VARCHAR2(255);
BEGIN
  result := REGEXP_REPLACE(subject, $$ {2,}$$, $$ $$, 'g');
END;
于 2010-05-03T06:25:55.937 に答える
0

plperl を使用でき、目的のために perl 正規表現を使用できます。

アップグレードは良いことですが、plperl を使用すると、もう少し長くスクレイピングすることができます。

于 2010-05-09T14:49:04.713 に答える