如何在mysql“ where”查询中删除非字母数字字符?

时间:2018-09-18 16:54:15

标签: mysql

电子商务网站受到了骗子的打击,我们看到的一种模式是,他避免创建重复的帐户,只需在电子邮件中加点便可以抓住他。

即。 "my.em.ail@gmail.com", "m.ye.mail@gmail.com", "mye.ma.il@gmail.com"

我知道这只会给他或其他尝试创建更多电子邮件的人带来不便,但这不是没有全部抓住它们的理由。

我们的防欺诈功能会寻找高速重复订单,例如:

$email = 'myemail@gmail.com';

"SELECT * FROM `orders` WHERE `date` > '".date('Y-m-d H:i:s', time() - 60*60*24)."' AND `email` = '".$email."'"

如何在查询中更新WHERE子句以包含上述示例?

1 个答案:

答案 0 :(得分:0)

在您提供的示例中,您可以删除.,然后找到具有相同电子邮件的任何行(不再计算周期)。

E.G:

$email = 'myemail@gmail.com';

SELECT * FROM `orders` WHERE `date` > "date('Y-m-d H:i:s', time() - 60*60*24)" 
AND REPLACE(`email`, ".", "")` = REPLACE("$email", ".", "")
)

如果您需要更复杂的内容,则必须创建一个函数来测量字符串的“相似度”以进行比较。有关更多详细信息,请参见此处:How to find similar results and sort by similarity?