我在不区分大小写的搜索中遇到问题。我正在使用以下环境:-
Database: MySQL
Collation/Character Encoding: utf8bin
Framework: Django-Tastypie
此排序规则/字符编码不支持不区分大小写的搜索。所以如果我写
SELECT .... WHERE company_name LIKE '%StackOverflow%';
那么它不会为“STACKOVERFLOW”或其他组合提供输出。
当我使用 Django-Tastypie 过滤时:-
company_name__icontains = 'StackOverflow'
它在内部触发相同的 SQL 查询,因此它没有给出正确的答案。
如果我使用简单的 MySQL 查询,那么我可能会使用:
SELECT .... WHERE UPPER(company_name) like upper('%StackOverflow%');
但无法在 Django-Tastypie 中为上述解决方案编写过滤器。
我找到了一种使用正则表达式解决问题的替代方法:-
company_name__iregex = '(S|s)(T|t)(A|a)(C|c)(K|k)(O|o)(V|v)(E|e)(R|r)(F|f)(L|l)(O|o)(W|w)'
但是,这是一种非常缓慢的方法。
有人可以提供解决方案,以便我可以在 Tastypie 中为不区分大小写的搜索构建过滤器。
谢谢