【问题标题】:How to force Django to do a case sensitive comparison?如何强制 Django 进行区分大小写的比较?
【发布时间】:2012-06-03 19:07:06
【问题描述】:

由于我们的数据库的整理方式,它们会忽略用户名和密码的大小写,我们目前无法在数据库级别进行修复。从this thread 看来,WHERE BINARY 'something' = 'Something' 应该可以解决问题,但我无法弄清楚让 Django 插入BINARY。有什么建议吗?

【问题讨论】:

标签: mysql django


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多