如何强制Django进行区分大小写的比较?

时间:2012-05-29 14:28:23

标签: mysql django

由于我们的数据库被整理的方式,他们忽略了用户名和密码的情况,我们目前无法在数据库级别修复。从this thread看来,WHERE BINARY 'something' = 'Something'应该解决问题,但我无法弄清楚让Django插入BINARY。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

我认为没有一种简单的方法可以强制Django在查询内容中添加内容。

您可能只想在Django中编写一个raw SQL query来获取通过区分大小写的比较过滤的对象,然后在普通查询中使用它们。

另一种方法是使用Django区分大小写的过滤器来实现相同的结果。例如。 contains / startswith都使用BINARY LIKE,可以在比较两个长度相同的字符串时使用(如密码哈希)。最后,您可以使用regexp进行区分大小写的比较。但在这种情况下,这些都是相当丑陋的方法。他们有一个不必要的开销,你应该尽可能避免它们。