0

大文字と小文字を区別しない検索で問題に直面しています。私は次の環境を使用しています:-

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で大文字と小文字を区別しない検索用のフィルターを構築できるように、誰かが解決策を提供できますか。

ありがとう

4

1 に答える 1