diff options
-rw-r--r-- | doc/src/sgml/func.sgml | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 30b34199375..51930a55fc6 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.515 2010/06/03 02:06:10 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.516 2010/06/03 14:40:42 momjian Exp $ --> <chapter id="functions"> <title>Functions and Operators</title> @@ -3445,19 +3445,22 @@ regexp_replace('foobarbaz', 'b(..)', E'X\\1Y', 'g') </para> <para> - The <function>regexp_matches</> function returns all of the captured - substrings resulting from matching a POSIX regular expression pattern. - It has the syntax + The <function>regexp_matches</> function returns a text array of + all of the captured substrings resulting from matching a POSIX + regular expression pattern. It has the syntax <function>regexp_matches</function>(<replaceable>string</>, <replaceable>pattern</> <optional>, <replaceable>flags</> </optional>). - If there is no match to the <replaceable>pattern</>, the function returns - no rows. If there is a match, the function returns a text array whose + The function can return no rows, one row, or multiple rows (see + the <literal>g</> flag below). If the <replaceable>pattern</> + does not match, the function returns no rows. If the pattern + contains no parenthesized subexpressions, then each row + returned is a single-element text array containing the substring + matching the whole pattern. If the pattern contains parenthesized + subexpressions, the function returns a text array whose <replaceable>n</>'th element is the substring matching the <replaceable>n</>'th parenthesized subexpression of the pattern (not counting <quote>non-capturing</> parentheses; see below for - details). If the pattern does not contain any parenthesized - subexpressions, then the result is a single-element text array containing - the substring matching the whole pattern. + details). The <replaceable>flags</> parameter is an optional text string containing zero or more single-letter flags that change the function's behavior. Flag <literal>g</> causes the function to find @@ -3490,6 +3493,16 @@ SELECT regexp_matches('foobarbequebaz', 'barbeque'); </programlisting> </para> + <para> + It is possible to force <function>regexp_matches()</> to always + return one row by using a sub-select; this is particularly useful + in a <literal>SELECT</> target list when you want all rows + returned, even non-matching ones: +<programlisting> +SELECT col1, (SELECT regexp_matches(col2, '(bar)(beque)')) FROM tab; +</programlisting> + </para> + <para> The <function>regexp_split_to_table</> function splits a string using a POSIX regular expression pattern as a delimiter. It has the syntax |