Fixed #507 -- Changed MySQL backend so that it uses 'LIKE BINARY' for case-sensitive comparisons -- contains, startswith and endswith. Thanks, Simon

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1036 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2005-11-01 01:08:13 +00:00
parent 390666ac2b
commit 7136eb8f3a
2 changed files with 10 additions and 11 deletions

View File

@ -125,15 +125,15 @@ def get_relations(cursor, table_name):
OPERATOR_MAPPING = { OPERATOR_MAPPING = {
'exact': '=', 'exact': '=',
'iexact': 'LIKE', 'iexact': 'LIKE',
'contains': 'LIKE', 'contains': 'LIKE BINARY',
'icontains': 'LIKE', 'icontains': 'LIKE',
'ne': '!=', 'ne': '!=',
'gt': '>', 'gt': '>',
'gte': '>=', 'gte': '>=',
'lt': '<', 'lt': '<',
'lte': '<=', 'lte': '<=',
'startswith': 'LIKE', 'startswith': 'LIKE BINARY',
'endswith': 'LIKE', 'endswith': 'LIKE BINARY',
'istartswith': 'LIKE', 'istartswith': 'LIKE',
'iendswith': 'LIKE', 'iendswith': 'LIKE',
} }

View File

@ -161,9 +161,9 @@ The DB API supports the following lookup types:
``foo``, ``FOO``, ``fOo``, etc. ``foo``, ``FOO``, ``fOo``, etc.
contains Case-sensitive containment test: contains Case-sensitive containment test:
``polls.get_list(question__contains="spam")`` returns all polls ``polls.get_list(question__contains="spam")`` returns all polls
that contain "spam" in the question. (PostgreSQL only. MySQL that contain "spam" in the question. (PostgreSQL and MySQL
doesn't support case-sensitive LIKE statements; ``contains`` only. SQLite doesn't support case-sensitive LIKE statements;
will act like ``icontains`` for MySQL.) ``contains`` will act like ``icontains`` for SQLite.)
icontains Case-insensitive containment test. icontains Case-insensitive containment test.
gt Greater than: ``polls.get_list(id__gt=4)``. gt Greater than: ``polls.get_list(id__gt=4)``.
gte Greater than or equal to. gte Greater than or equal to.
@ -174,11 +174,10 @@ The DB API supports the following lookup types:
a list of polls whose IDs are either 1, 3 or 4. a list of polls whose IDs are either 1, 3 or 4.
startswith Case-sensitive starts-with: startswith Case-sensitive starts-with:
``polls.get_list(question_startswith="Would")``. (PostgreSQL ``polls.get_list(question_startswith="Would")``. (PostgreSQL
only. MySQL doesn't support case-sensitive LIKE statements; and MySQL only. SQLite doesn't support case-sensitive LIKE
``startswith`` will act like ``istartswith`` for MySQL.) statements; ``startswith`` will act like ``istartswith`` for
endswith Case-sensitive ends-with. (PostgreSQL only. MySQL doesn't SQLite.)
support case-sensitive LIKE statements; ``endswith`` will act endswith Case-sensitive ends-with. (PostgreSQL and MySQL only.)
like ``iendswith`` for MySQL.)
istartswith Case-insensitive starts-with. istartswith Case-insensitive starts-with.
iendswith Case-insensitive ends-with. iendswith Case-insensitive ends-with.
range Range test: range Range test: