0
開発サーバーでicontains
を使用していくつかの奇妙な動作が発生しています。私はいくつかの奇妙な結果(期待数ではない)を返す複雑なクエリを持っています。私は掘り下げて、問題がicontains
であると思われることを発見しました。開発時のDjangoの奇妙なアイコンの振る舞い
mysql> select * from species where en_name RLIKE 'tortoise';
+-------+----------------------------------+
| id | en_name |
+-------+----------------------------------+
| 16215 | Santa Cruz Galapagos Tortoise |
| 16214 | Floreana Galapagos Tortoise |
| 16213 | Volcan Darwin Galapagos Tortoise |
| 16211 | Sierra Negra Galapagos Tortoise |
| 16210 | Pinzon Galapagos Tortoise |
| 16209 | Santiago Galapagos Tortoise |
| 738 | River Tortoise |
| 16207 | Volcan Wolf Galapagos Tortoise |
| 16206 | Pinta Galapagos Tortoise |
| 16216 | Fernandina Galapagos Tortoise |
| 16217 | Santa Fe Galapagos Tortoise |
| 16218 | Alcedo Galapagos Tortoise |
| 16219 | Cerro Azul Galapagos Tortoise |
| 16220 | Rabida Galapagos Tortoise |
+-------+----------------------------------+
14 rows in set (0.00 sec)
私はDjangoのシェルにドロップし、実行します:
query_set = Species.objects.filter(en_name__icontains='tortoise')
私が手
まず第一には、ここで私はジャンゴで実行するクエリの一部のMySQLの出力であります1つの結果:
>>> for i in query_set:
... print i.en_name
...
River Tortoise
私は、それは、空白の数と関係があると思います。 en_name
文字列(川の亀には1つしかないが、他のものには1以上がある)。私はまた、icontains
が開発と生産において異なった動作をすると聞いています。
誰もがこれにいくつかの光を当てることができますか?
実行されRLIKE、何をしたい場合:>>>印刷query_set.query – Ted
以上であるBeacuseをちょうど例です。私がprint_set.queryを実行すると、私は実際のデータセットにたくさんの結合を取得します。しかし、インポート部分は '... WHERE' mytable'.'en_name' LIKE%tortoise% 'と出てきます。それはRLIKEではありませんか? –
ILIKEの代わりにLIKEを取得する方法がわかりませんが、探しているRLIKEの動作を取得する方法についての私の回答を参照してください – Ted