Как запросить soundex() в MySQL

Какова правильная структура для поиска в MySql, используя soundex()? Я знаю, как создать Soundex():

select soundex('str');

просто не уверен, как включить это в мой запрос.

4 ответа

Решение

Если вы ищете "Льюис" против name поле people Таблица, вы выполняете этот запрос:

SELECT *
FROM people
WHERE soundex("lewis") = soundex(name);

пример здесь

Очевидно, что 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`;
Другие вопросы по тегам