Я хочу знать, есть ли в Oracle SQL способ сравнить две строки на сходство, отличное от =
или , например
. Например, в SQL Server есть функция разница (str1, str2)
, которая сравнивает две строки и дает оценку сходства (от 0 до 4). Не совсем то, что я хочу, но это все равно было бы чрезвычайно полезно.
Я специально надеялся на функции или методы , которые:
Основное использование будет для строк одинаковой длины, содержащих числа (идентификаторы, номера телефонов и т. д.)В моих целях я бы использовал его, чтобы найти возможные совпадения, в которых буквы / цифры могли быть переставлены. 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)
Но это настолько неэлегантно, насколько вы можете получить.
Любая помощь будет принята с благодарностью.