2012-04-10 66 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