我有一个充满客户数据的SAP Oracle数据库。在我们的自定义CRM中,使用通配符搜索客户是相当普遍的。除了SAP标准搜索外,我们还想对名称进行模糊文本搜索,以查找与输入名称类似的名称。目前,我们正在使用UTL_MATCH.EDIT_DISTANCE函数来搜索类似的名称。唯一的缺点是无法使用某些通配符模式。
是否有可能在UTL_MATCH.EDIT_DISTANCE函数中使用通配符,或者存在不同(甚至更好)的方法来实现这一点?
假设数据库中有以下名称:
是否有可能在UTL_MATCH.EDIT_DISTANCE函数中使用通配符,或者存在不同(甚至更好)的方法来实现这一点?
假设数据库中有以下名称:
PATRICK NOR
ORVILLE ALEX
OWEN TRISTAN
OKEN TRIST
查询可能是OKEN*IST*
,并且应该返回OWEN TRISTAN
和OKEN TRISTAN
。 OKEN
将是100%匹配,而OWEN
的匹配度较低。
我的当前测试查询如下:
SELECT gp.partner, gp.bu_sort1, UTL_MATCH.edit_distance(gp.bu_sort1, ?) as edit_distance,
FROM but000 gp
WHERE UTL_MATCH.edit_distance(gp.bu_sort1, ?) < 4
这个查询在搜索字符串中使用通配符*
时会出现问题(这是相当常见的情况)。