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