query.filter(User.name.like('%ed%'))
+ .. note:: :meth:`.ColumnOperators.like` renders the LIKE operator, which
+ is case insensitive on some backends, and case sensitive
+ on others. For guaranteed case-insensitive comparisons, use
+ :meth:`.ColumnOperators.ilike`.
+
+* :meth:`ILIKE <.ColumnOperators.ilike>` (case-insensitive LIKE)::
+
+ query.filter(User.name.ilike('%ed%'))
+
+ .. note:: most backends don't support ILIKE directly. For those,
+ the :meth:`.ColumnOperators.ilike` operator renders an expression
+ combining LIKE with the LOWER SQL function applied to each operand.
+
* :meth:`IN <.ColumnOperators.in_>`::
query.filter(User.name.in_(['ed', 'wendy', 'jack']))
# works with query objects too:
query.filter(User.name.in_(
- session.query(User.name).filter(User.name.like('%ed%'))
+ session.query(User.name).filter(User.name.like('%ed%'))
))
* :meth:`NOT IN <.ColumnOperators.notin_>`::
return self.operate(concat_op, other)
def like(self, other, escape=None):
- """Implement the ``like`` operator.
+ r"""Implement the ``like`` operator.
- In a column context, produces the clause ``a LIKE other``.
+ In a column context, produces the expression::
+
+ a LIKE other
E.g.::
- select([sometable]).where(sometable.c.column.like("%foobar%"))
+ stmt = select([sometable]).\
+ where(sometable.c.column.like("%foobar%"))
:param other: expression to be compared
:param escape: optional escape character, renders the ``ESCAPE``
return self.operate(like_op, other, escape=escape)
def ilike(self, other, escape=None):
- """Implement the ``ilike`` operator.
+ r"""Implement the ``ilike`` operator, e.g. case insensitive LIKE.
+
+ In a column context, produces an expression either of the form::
+
+ lower(a) LIKE lower(other)
+
+ Or on backends that support the ILIKE operator::
- In a column context, produces the clause ``a ILIKE other``.
+ a ILIKE other
E.g.::
- select([sometable]).where(sometable.c.column.ilike("%foobar%"))
+ stmt = select([sometable]).\
+ where(sometable.c.column.ilike("%foobar%"))
:param other: expression to be compared
:param escape: optional escape character, renders the ``ESCAPE``