什么是使用
soundex()
在MySql中进行搜索的正确结构?我知道如何生成一个soundex():select soundex('str');
我不确定如何在我的查询中包含这个内容。
如果你想在people
表的name
字段中搜索"lewis",则执行以下查询:
SELECT *
FROM people
WHERE soundex("lewis") = soundex(name);
soundex("lewis") = L200
和 soundex("luis") = L200
。因此,soundex("lewis") = soundex("luis")
匹配,而 "lewis" = "luis"
显然不匹配。在英语中“听起来相同”的单词通常应具有相同的代码。 - pala_显然,soundex并不适用于这种部分匹配的情况(例如:SELECT SOUNDEX('house cleaning'), SOUNDEX('house')
将无法匹配),但如果您想执行一个恶心的SOUNDEX LIKE
,那么可以这样做。
SELECT * FROM tablename WHERE SOUNDEX(column) LIKE CONCAT(SOUNDEX('partial_string'), '%')
您也可以这样做
SELECT * FROM tablename WHERE SOUNDEX(column) LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('hows ')), '%')
这应该可以工作
select * from table_name where soundex(column_name) = soundex('word');
这是一个很好的地方,可以阅读有关这些内容的信息:http://www.postgresonline.com/journal/archives/158-Where-is-soundex-and-other-warm-and-fuzzy-string-things.html
MySQL现在有一种本地方法可以做到这一点!
您可以使用语法SOUNDS LIKE
进行相似性搜索。
SELECT * FROM table Where SOUNDEX(`field1`) = SOUNDEX(`field2`);
等同于:
SELECT * FROM table Where `field1` SOUNDS LIKE `field2`;
where soundex("search_string") = soundex(search_column)
- pala_