Phi*_*lip 5 string oracle string-comparison
我想知道在Oracle SQL中是否有一种方法可以比较两个字符串以寻找除=or 之外的相似之处like.例如,SQL Server有一个difference(str1, str2)比较两个字符串并给出相似性评级(0到4)的函数.不完全是我想要的,但这仍然非常有帮助.
我希望专门针对以下功能或方法:
主要用途是包含相同长度的字符串,包含数字(ID,电话号码等).出于我的目的,我会用它来查找字母/数字可能已被转置的可能匹配. Soundex(string)适用于alpha字符串,但似乎忽略了数字(有充分理由).
我没有权限自己创建函数,但如果有人知道这样做的方法,我会有兴趣听到它.比较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)
Run Code Online (Sandbox Code Playgroud)
但这就像你能得到的那样不那么优雅.
任何帮助将不胜感激.
Jus*_*ave 20
听起来你正在寻找UTL_MATCH包
SELECT utl_match.edit_distance( string1, string2 )
FROM dual
Run Code Online (Sandbox Code Playgroud)
告诉你将string1转换为string2所需的编辑次数
SQL> select utl_match.edit_distance( 'Bear', 'berry' ) from dual;
UTL_MATCH.EDIT_DISTANCE('BEAR','BERRY')
---------------------------------------
3
Run Code Online (Sandbox Code Playgroud)
还有一些相似性函数EDIT_DISTANCE_SIMILARITY,JARO_WINKLER_SIMILARITY它们给出0到100之间的相似性分数,让您了解字符串的相似程度.