【发布时间】:2012-03-13 21:04:13
【问题描述】:
我有一个要求,我需要将“testuser”或“joeperson”等文本与“test.user”或“joe.person”等数据进行匹配。我不知道实际数据中传入搜索词中的句点在哪里。简而言之,我们有像 /cart/[user name which can have a period]/items/ 这样的 URL,我需要搜索与该模式匹配的所有用户名。
我正在对 MySQL 数据库使用 Django 和 Python。我知道我可以执行如下 Django 查询:
User.objects.filter(username__regex='[some crazy pattern]') 但这是我需要帮助的疯狂模式。
非常感谢!
【问题讨论】:
-
你不能只从字符串中删除句点,然后用你的新的、清理过的字符串进行常规搜索吗?
-
不,数据库中的数据可能有句号,认为是正确的。这是没有句号的搜索词。
-
为什么不将数据库数据保存为没有句点的规范化形式?正则表达式会很慢。
-
@NiklasB。是的,这会起作用,但在这种情况下,我们无权访问此数据库。所以我不得不捏造它。
-
我看到的最简单的解决方案是
WHERE REPLACE(your_column, '.', '') = 'your_username_without_periods',但它的效率会非常低。