2011-05-20 90 views
1

我有一個12個字符代碼的InnoDB數據庫表,經常需要由用戶輸入。 偶爾,用戶會錯誤地輸入代碼(例如輸入小寫的L而不是1等)。 我想寫一個查詢,將找到類似的代碼,他們已經進入,但使用LIKE'%code%'給了我太多的結果,其中許多隻包含一個匹配的字符。MySQL查找類似的字符串

有沒有辦法進行更詳細的檢查?

編輯 - 不區分大小寫。

任何意見讚賞。

謝謝。

+0

你是否想要區分大小寫的檢查? – diEcho 2011-05-20 10:18:00

+0

請看看我的答案,我不知道爲什麼它downvoted – diEcho 2011-05-20 10:27:44

回答

-1

看看soundex。常用拼錯字符串具有相同的soundex代碼,這樣你就可以查詢:

where soundex(Code) like soundex(UserInput) 
+0

這不是成功bcoz兩個聲音幾乎相同的字符串應該有相同的soundex字符串。「標準soundex字符串是四個字符長,但SOUNDEX()函數返回一個任意長的字符串。您可以在結果上使用SUBSTRING()來獲得標準的soundex字符串。 str中的所有非字母字符都將被忽略。在A-Z範圍之外的所有國際字母字符被視爲元音。' – diEcho 2011-05-20 10:19:51

-1

使用無通配符%

SELECT `code` FROM table where code LIKE 'user_input' 

THI WIL同時檢查空間

SELECT 'a' = 'a ', return 1 whereas SELCET 'a' LIKE 'a ' return 0 

reference

+1

-1這隻會找到「代碼」,沒有別的;問題是找到類似的字符串 – Andomar 2011-05-20 10:22:11

+0

@Andomar,用戶想要檢查用db中給定代碼的用戶輸入,看看我的更新。 – diEcho 2011-05-20 10:25:40

+0

有人會給我doenvoted的理由嗎? – diEcho 2011-05-20 10:26:11