0

我有一个名为“customers1”的 MySQL 表运行引擎 MyISAM。我已经在列名称、地址和 zip 上创建了一个全文索引。现在那张桌子上的一位顾客是我。我拼写我的名字“Gildebrand”。现在我不能指望用户可以正确拼写我的名字,很多人可能会写“Glidebrant”,但仍然想找到我的。我如何在 SQL 中进行搜索?

如果我现在运行以下查询

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand')

它当然会找到我。但如果我拼错了“Glidebrand”,它就找不到我。最好的方法是什么?

4

2 回答 2

2

如果使用http://www.w3resource.com/mysql/string-functions/mysql-soundex-function.php,我会说你可以从这样的结果中得到最接近的结果SOUNDEX()

于 2012-05-17T19:05:43.123 回答
1

我有一个与您类似的通用搜索。这基本上是我所做的:

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')

这也允许用户只输入前缀。

如果用户意识到他们不能拼写您的名字,但他们确定它以 开头Gil,那么他们可以直接输入。

如果您也想在其他列上支持前缀,则可以添加额外的 UNION 子句。

于 2012-05-17T19:55:25.287 回答