Исключение из HRESULT: ошибка 0x800A03EC

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

54
задан Daniil Shevelev 3 October 2012 в 18:31
поделиться