如何在MySQL中搜索“1800flowers”中的“1-800-flowers”?
我有数据“1-800-flowers”,但我希望通过“1800flowers”找到它。
答案 0 :(得分:6)
您可能最好创建第二列,用1800flowers
填充(替换所有要忽略的字符)并搜索。这样,您就可以充分利用索引。
转换所有现有数据的快捷方式是
UPDATE table SET columnname_without_hyphens = REPLACE(columnname, "-", "");
答案 1 :(得分:2)
如果您的问题只是忽略连字符,我建议您使用REPLACE
来消除连字符,如下所示:
SELECT ... WHERE REPLACE(column, '-', '') ...
否则,如果您正在寻找“听起来相似”的字符串,您可能需要查看SOUNDEX
函数。
答案 2 :(得分:0)
使用replace函数会杀死在列上使用索引的任何能力,但是:
select *
from YourTable
where replace(YourColumn, '-', '') = '1800flowers'