20

したがって、この文字列がある場合aassdd

このコード:

regexp_matches('aassdd', 'a', 'g')

2 つの異なる行を返します。

すべての一致を 1 つの行として取得することは可能ですか? たとえば、array上記のコードからの1行のタイプとして、必要な結果は次のとおりです。{a,a}

4

4 に答える 4

0

plperl

ある程度高性能なものを探しているなら、

CREATE LANGUAGE plperl;

CREATE FUNCTION regexp_return_matches(text, text)
RETURNS text[]
AS $$
  my ( $input, $pattern ) = @_;
  $pattern = quotemeta($pattern);
  return [$input =~ m/($pattern)/g];
$$ LANGUAGE plperl;

SELECT regexp_return_matches('aassdd', 'a');
 regexp_return_matches 
-----------------------
 {a,a}
(1 row)
于 2018-01-01T00:08:53.023 に答える