我有一个名为“customers1”的MySQL表,它运行引擎MyISAM。我已经在列名,地址和zip上创建了一个全文索引。现在,该表中的一位客户就是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户可以正确拼写我的名字,许多人可能写“Glidebrant”,但仍想找到我的。我怎么能在SQL中进行搜索?
如果我现在运行以下查询
SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand')
当然,它找到了我。但如果我拼错,“Glidebrand”,它找不到我。最好的办法是什么?
答案 0 :(得分:2)
如果使用SOUNDEX()
http://www.w3resource.com/mysql/string-functions/mysql-soundex-function.php
答案 1 :(得分:1)
我有类似于你的通用搜索。这基本上就是我做的事情:
SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')
这允许用户也只输入前缀。
如果用户意识到他们无法拼写您的姓名,但他们确信它以Gil
开头,那么他们就可以输入。
如果您还想在其他列上支持前缀,可以添加其他UNION子句。