Как запросить 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`;