Используйте UTL_MATCH
пакет или SOUNDEX
функцию :
SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE Employees ( Name ) AS
SELECT 'Paul Jaymes' FROM DUAL;
Запрос 1 :
UTL_MATCH.EDIT_DISTANCE
:
Вычисляет количество изменений, необходимых для преобразования строки-1 в строку-2
SELECT *
FROM Employees
WHERE UTL_MATCH.EDIT_DISTANCE( Name, 'Paul James' ) < 2
Запрос 2 :
UTL_MATCH.EDIT_DISTANCE_SIMILARITY
:
Вычисляет количество изменений, необходимых для преобразования строки-1 в строку-2, возвращая значение от 0 (без совпадения) до 100 (безошибочное совпадение)
SELECT *
FROM Employees
WHERE UTL_MATCH.EDIT_DISTANCE_SIMILARITY( Name, 'Paul James' ) > 90
Запрос 3 :
UTL_MATCH.JARO_WINKLER
:
Вычисляет меру согласия между строкой-1 и строкой-2
SELECT *
FROM Employees
WHERE UTL_MATCH.JARO_WINKLER( Name, 'Paul James' ) > 0.9
Запрос 4 :
UTL_MATCH.JARO_WINKLER_SIMILARITY
:
Вычисляет меру соответствия между строкой-1 и строкой-2, возвращая значение между 0 (без совпадения) и 100 (безошибочное совпадение)
SELECT *
FROM Employees
WHERE UTL_MATCH.JARO_WINKLER_SIMILARITY( Name, 'Paul James' ) > 95
Запрос 5 :
SOUNDEX
:
возвращает строку символов, содержащую фонетическое представление char. Эта функция позволяет сравнивать слова, написанные по-разному, но звучащие одинаково на английском языке
SELECT *
FROM Employees
WHERE SOUNDEX( Name ) = SOUNDEX( 'Paul James' )
Результаты :
Все дают вывод:
| NAME |
|-------------|
| Paul Jaymes |