2011-02-07 128 views
4

如何在MySQL中使用「1800flowers」搜索「1-800-flowers」?MySQL搜索忽略連字符

我有數據「1-800-flowers」,但我想通過「1800flowers」找到它。

+0

您可以傳遞數據給mysql的像PHP之前刪除您的連字符`str_replace函數($ SEARCH_STR,「 - 」,「」);` – user973254 2011-10-18 14:54:53

回答

0

使用替換功能將殺死任何對列使用索引能力,但是:

select * 
    from YourTable 
    where replace(YourColumn, '-', '') = '1800flowers' 
2

如果您的問題只是忽略連字符,我可能會建議使用REPLACE消除它們,這樣:

SELECT ... WHERE REPLACE(column, '-', '') ... 

否則,如果你正在尋找字符串「聲音相似的」,你可能想看看在SOUNDEX功能。

6

您可能最好創建第二列,填寫1800flowers(替換您要忽略的所有字符)並搜索該列。這樣,你可以充分利用索引。

一個快速的方法來轉換現有的所有數據將

UPDATE table SET columnname_without_hyphens = REPLACE(columnname, "-", "");