# -*- coding: utf-8 -*-
SPECIAL_CHARACTERS_MAP = {
'e': u'[eé]',
}
def get_query(string):
pattern_value = u''
for s in string:
pattern_value += s if s not in SPECIAL_CHARACTERS_MAP else SPECIAL_CHARACTERS_MAP[s]
query = u"SELECT * FROM table WHERE record LIKE '%{}%'".format(pattern_value)
return query
print get_query(u'ewqeé')
# SELECT * FROM table WHERE record LIKE '%[eé]wq[eé]é%'
# Code to query database ....
事实上,很少有办法做到这一点。在
我的猜测是最简单最简单(但不是最好的)的方法,通过创建带有字符的特殊映射来实现,这些字符可以相互替换,然后使用该映射创建查询:
所以你可以用更多的例子来扩展你的地图,比如
'a': 'u[aà]'
等等另一个选择是在数据库中创建单独的列,并使用类似于上面的
SPECIAL_CHARACTERS_MAP
这样的非常相似的数据结构来填充该列,以使字符的替换更容易,但在这种情况下,必须在将搜索项传递到LIKE
查询之前执行相同的替换。在使用SQL Wildcards运算符执行
SELECT
查询时,使用完整的信息创建要匹配的字符串。在最后我用以下代码解决了这个问题:
它回来了
^{pr2}$此方法还可以更正以下字符:ü,ö,á,é,í,ó,ú,ü,ñ,ī
相关问题 更多 >
编程相关推荐