2012-04-10 164 views
1

MySQL中有找到在文本字段中查找密切匹配的方法吗?在搜索[email protected]时说找到[email protected]MySQL - 查找关闭匹配

所以基本上,如果用户搜索thier自己的电子邮件地址,它最初进入数据库错误,它扔了一个潜在的匹配,如果它是稍微偏离

+2

取决于您通过近似匹配的含义。 – liquorvicar 2012-04-10 17:51:46

+0

@livvvicar是的。无论如何,没有什么比谷歌的''你的意思是:...... :) – 2012-04-10 18:21:16

+1

@MostyMostacho是的,如果只有我们都可以拥有G的算法...无论如何+1你的levenshtein链接。不知道在MySQL – liquorvicar 2012-04-10 18:24:16

回答

7

解决这种模式匹配问题会带来一种痛苦。

两个字符串之间的Levenshtein距离是一个串转换成另一个,其中,一个操作可以是插入,缺失或一个字符的替代所需的操作的最小数量。

查询this out。

+0

这是*完美*,谢谢! – BenOfTheNorth 2012-04-10 18:30:05

+1

新闻给我也是。我觉得这是完美的,但对于很长的电子邮件地址会很慢。希望不会有太多次需要运行。 – 2012-04-10 18:35:06

+1

刚刚测试出来,它工作得很好。这只会在用户没有收到邮件时手动重发电子邮件(他们必须自己做),所以它几乎永远不会运行 – BenOfTheNorth 2012-04-10 18:42:27

1

试着以一些pattern matching

SQL模式匹配允许您使用“_”匹配任何单个 字符和“%”以匹配字符 任意数量(包括零个字符)。在MySQL中,默认情况下,SQL模式为 不区分大小写。这里显示了一些示例。当您使用SQL模式时,您不使用 use =或<>;改用LIKE或NOT LIKE 比较运算符。

+0

中有一个实现它的问题是,如果我使用像,它会太松散,如果我使用正则表达式,它会太紧。我需要一些通用的,可以找到任何东西,而不需要规则集 – BenOfTheNorth 2012-04-10 17:51:14

+0

正则表达式可以像你想要的那样具体或一般。 'LIKE'关键字可以在中间找到一个缺少的字符或一组字符。如果你想要更多,请使用正则表达式。您可能只是使用了错误的正则表达式字符串。 – 2012-04-10 17:53:28

+0

我还没有使用任何东西,我假设所有。我认为我或许可以用类似的方式工作,如果我在@处分割电子邮件地址,并且分别执行前半部分和后半部分 – BenOfTheNorth 2012-04-10 17:56:27