1. Сходство
Для Levenshtein в MySQL я нашел это, от www.codejanitor.com/wp/2007/02/10/levenshtein-distance-as-a-mysql-stored-function
SELECT
column,
LEVENSHTEIN(column, 'search_string') AS distance
FROM table
WHERE
LEVENSHTEIN(column, 'search_string') < distance_limit
ORDER BY distance DESC
2. Содержит, нечувствительность к регистру
Используйте инструкцию LIKE
MySQL, которая по умолчанию нечувствительна к регистру. %
является подстановочным знаком, поэтому может быть любая строка до и после search_string
.
SELECT
*
FROM
table
WHERE
column_name LIKE "%search_string%"
3. Содержащий, чувствительный к регистру
Справочник по MySQL помогает:
Набор символов и сортировка по умолчанию - latin1 и latin1_swedish_ci, поэтому неважные сопоставления строк являются случайными по умолчанию нечувствителен. Это означает, что при поиске с col_name LIKE 'a%' вы получаете все значения столбцов, начинающиеся с A или a. Чтобы сделать этот регистр чувствительным, убедитесь, что один из операндов имеет чувствительную к регистру или двоичную сортировку. Например, если вы сравниваете столбец и строку, у которых есть набор символов latin1, вы можете использовать оператор COLLATE, чтобы заставить либо операнд иметь сортировку latin1_general_cs, либо latin1_bin ...
blockquote>Моя настройка MySQL не поддерживает
latin1_general_cs
илиlatin1_bin
, но для меня было полезно использовать сортировкуutf8_bin
, поскольку двоичный utf8 чувствителен к регистру:SELECT * FROM table WHERE column_name LIKE "%search_string%" COLLATE utf8_bin
2. / 3. отсортировано по Левенштейну Расстояние
SELECT column, LEVENSHTEIN(column, 'search_string') AS distance // for sorting FROM table WHERE column_name LIKE "%search_string%" COLLATE utf8_bin // for case sensitivity, just leave out for CI ORDER BY distance DESC