Doc: explain that LIKE et al can be used in ANY (sub-select) etc.

This wasn't stated anywhere, and it's perhaps not that obvious,
since we get questions about it from time to time.  Also undocumented
was that the parser actually translates these into operators.

Discussion: https://postgr.es/m/CAFj8pRBkvZ71BqGKZnBBG4=0cKG+s50Dy+DYmrizUKEpAtdc+w@mail.gmail.com
This commit is contained in:
Tom Lane 2020-03-23 12:42:15 -04:00
parent aae7e8530d
commit 25bf317ccd

View File

@ -4046,7 +4046,23 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation>
<literal>!~~</literal> and <literal>!~~*</literal> operators that <literal>!~~</literal> and <literal>!~~*</literal> operators that
represent <function>NOT LIKE</function> and <function>NOT represent <function>NOT LIKE</function> and <function>NOT
ILIKE</function>, respectively. All of these operators are ILIKE</function>, respectively. All of these operators are
<productname>PostgreSQL</productname>-specific. <productname>PostgreSQL</productname>-specific. You may see these
operator names in <command>EXPLAIN</command> output and similar
places, since the parser actually translates <function>LIKE</function>
et al. to these operators.
</para>
<para>
The phrases <function>LIKE</function>, <function>ILIKE</function>,
<function>NOT LIKE</function>, and <function>NOT ILIKE</function> are
generally treated as operators
in <productname>PostgreSQL</productname> syntax; for example they can
be used in <replaceable>expression</replaceable>
<replaceable>operator</replaceable> ANY
(<replaceable>subquery</replaceable>) constructs, although
an <literal>ESCAPE</literal> clause cannot be included there. In some
obscure cases it may be necessary to use the underlying operator names
instead.
</para> </para>
<para> <para>