【问题标题】:MySQL escape everything (all special characters)MySQL 转义一切(所有特殊字符)
【发布时间】:2014-05-30 13:25:24
【问题描述】:

我正在做一个mysql查询来选择一个值为LIKE query_search的东西

我想要实现的是搜索作为参数传递给查询的确切query_search。 例如,如果query_search 是以下之一:%adminyou're\'/_%',我只想查找完全匹配的条目。

对于%admin,我只想找到%admin这个条目,但是myadmin应该找不到。

那么,如何转义所有的mysql特殊字符呢?

\ 放在query_search 的每个字符前面会是一个好的解决方案吗?

对于Django的了解者,我使用的是

something.extra(
   where=['value like convert(_utf8%s using utf8)'],
   params=query_search,
)

其中something 是一个查询集。我使用 MySQL 作为数据库,我收到 query_search 作为参数。也许还有另一种方法可以用 Django 实现这一点。

谢谢。

【问题讨论】:

    标签: mysql sql django search


    【解决方案1】:

    您可以在Queryset.filteruse contains(或icontains):

    something.filter(value__contains=query_search)
    

    【讨论】:

    • 我的项目有一个 API 方法,它允许多种类型的搜索。 def search(keyword, type)。例如,如果 type 为 2,则允许搜索后缀。所以如果keyword='adm' 它应该找到“管理”。如果keyword='adm%' 它应该什么也找不到。这就是为什么我必须欺骗 mysql。我觉得你的回答对我来说没问题。我可以先进行contains 过滤,然后根据type 进行进一步过滤。好点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2015-05-23
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多