Расширенное сравнение строк в Oracle SQL

Я хочу знать, есть ли в Oracle SQL способ сравнить две строки на сходство, отличное от = или , например . Например, в SQL Server есть функция разница (str1, str2) , которая сравнивает две строки и дает оценку сходства (от 0 до 4). Не совсем то, что я хочу, но это все равно было бы чрезвычайно полезно.

Я специально надеялся на функции или методы , которые:

  1. Сравнивают строковый символ по символу (возвращают количество точных совпадений)
  2. Сообщают, сколько символов в одной строке, но в неправильном месте

Основное использование будет для строк одинаковой длины, содержащих числа (идентификаторы, номера телефонов и т. д.)В моих целях я бы использовал его, чтобы найти возможные совпадения, в которых буквы / цифры могли быть переставлены. Soundex (строка) хорошо работает для альфа-строк, но, похоже, игнорирует числа (по уважительной причине).

У меня нет привилегий создавать функции самостоятельно, но если кто-то знает способ этого, мне было бы интересно услышать об этом. Одно из решений для сравнения char-to-char (которое работает, только если вы знаете МАКСИМАЛЬНОЕ количество символов):

 --For char-to-char counts
    Decode(substr(ID1,1,1),  substr(ID2,1,1), 1,  0) +
    Decode(substr(ID1,2,1),  substr(ID2,2,1), 1,  0) +
    [...]
    Decode(substr(ID1,N,1),  substr(ID2,N,1), 1,  0)

Но это настолько неэлегантно, насколько вы можете получить.

Любая помощь будет принята с благодарностью.

5
задан Phillip 22 February 2012 в 16:26
поделиться