diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/func.sgml | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index c878a0ba4de..f2e545ed87f 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -4122,6 +4122,14 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation> </para> <para> + According to the SQL standard, omitting <literal>ESCAPE</literal> + means there is no escape character (rather than defaulting to a + backslash), and a zero-length <literal>ESCAPE</literal> value is + disallowed. <productname>PostgreSQL</productname>'s behavior in + this regard is therefore slightly nonstandard. + </para> + + <para> The key word <token>ILIKE</token> can be used instead of <token>LIKE</token> to make the match case-insensitive according to the active locale. This is not in the <acronym>SQL</acronym> standard but is a @@ -4139,9 +4147,9 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation> </para> <para> - There is also the prefix operator <literal>^@</literal> and corresponding - <function>starts_with</function> function which covers cases when only - searching by beginning of the string is needed. + Also see the prefix operator <literal>^@</literal> and corresponding + <function>starts_with</function> function, which are useful in cases + where simply matching the beginning of a string is needed. </para> </sect2> @@ -4172,7 +4180,7 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation> It is similar to <function>LIKE</function>, except that it interprets the pattern using the SQL standard's definition of a regular expression. SQL regular expressions are a curious cross - between <function>LIKE</function> notation and common regular + between <function>LIKE</function> notation and common (POSIX) regular expression notation. </para> @@ -4256,18 +4264,38 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation> </para> <para> - As with <function>LIKE</function>, a backslash disables the special meaning - of any of these metacharacters; or a different escape character can - be specified with <literal>ESCAPE</literal>. + As with <function>LIKE</function>, a backslash disables the special + meaning of any of these metacharacters. A different escape character + can be specified with <literal>ESCAPE</literal>, or the escape + capability can be disabled by writing <literal>ESCAPE ''</literal>. + </para> + + <para> + According to the SQL standard, omitting <literal>ESCAPE</literal> + means there is no escape character (rather than defaulting to a + backslash), and a zero-length <literal>ESCAPE</literal> value is + disallowed. <productname>PostgreSQL</productname>'s behavior in + this regard is therefore slightly nonstandard. + </para> + + <para> + Another nonstandard extension is that following the escape character + with a letter or digit provides access to the escape sequences + defined for POSIX regular expressions; see + <xref linkend="posix-character-entry-escapes-table"/>, + <xref linkend="posix-class-shorthand-escapes-table"/>, and + <xref linkend="posix-constraint-escapes-table"/> below. </para> <para> Some examples: <programlisting> -'abc' SIMILAR TO 'abc' <lineannotation>true</lineannotation> -'abc' SIMILAR TO 'a' <lineannotation>false</lineannotation> -'abc' SIMILAR TO '%(b|d)%' <lineannotation>true</lineannotation> -'abc' SIMILAR TO '(b|c)%' <lineannotation>false</lineannotation> +'abc' SIMILAR TO 'abc' <lineannotation>true</lineannotation> +'abc' SIMILAR TO 'a' <lineannotation>false</lineannotation> +'abc' SIMILAR TO '%(b|d)%' <lineannotation>true</lineannotation> +'abc' SIMILAR TO '(b|c)%' <lineannotation>false</lineannotation> +'-abc-' SIMILAR TO '%\mabc\M%' <lineannotation>true</lineannotation> +'xabcy' SIMILAR TO '%\mabc\M%' <lineannotation>false</lineannotation> </programlisting> </para> |