`

UTL_MATCH - String Similarity in Oracle

阅读更多

Thursday, December 07, 2006

UTL_MATCH - String Similarity in Oracle

You can compare string using equality operator (=), or using similarity operator (LIKE). But there are cases where it is not enough. You Can use UTL_MATCH package to calculate string similarity index. This packages offers 4 functions that take two strings as parameters:

  • edit_distance - algorithm by Levenshtein - returns number of edits that must be done to change one string into second,
  • edit_distance_similarity - normalized results of edit_distance in percents - integer values,
  • jaro_winkler - returns similarity based on Jaro-Winkler distance algorithm,
  • jaro_winkler_similarity - same as above but presented as integer in range 0-100.
Lets teke a look how it works. First we can create sample table and insert some data:
create table countries(name varchar2(15) not null);
insert into countries values ('Poland');
insert into countries values ('Germany');
insert into countries values ('United States');
insert into countries values ('Portugal');
insert into countries values ('Czech Republic');
insert into countries values ('China');
insert into countries values ('Slovakia');
insert into countries values ('Slovenia');
commit;
Now we can take a look at results. Lets compare to miss-spelled country name: 'Slovnia'
select name
 ,to_char(utl_match.edit_distance(name, 'Slovnia'),'999') edit_dist
 ,to_char(utl_match.edit_distance_similarity(name, 'Slovnia'),'999') edit_dist_sim
 ,to_char(utl_match.jaro_winkler(name, 'Slovnia'),'999d9999') jaro_winkler
 ,to_char(utl_match.jaro_winkler_similarity(name, 'Slovnia'),'999') jaro_winkler_sim
from countries
order by jaro_winkler_sim desc;

NAME                 EDIT EDIT JARO_WINK JARO
-------------------- ---- ---- --------- ----
Slovenia                1   88     .9750   97
Slovakia                2   75     .8881   88
China                   5   29     .5619   56
United States          12    8     .5531   55
Poland                  6   15     .5317   53
Portugal                7   13     .5119   51
Germany                 7    0     .3571   35
Czech Republic         13    8     .0000    0
Above we can observe differences in algorithms.
Lets test it on NULLs:
SQL> select to_char(utl_match.edit_distance('test', NULL),'999')
  2      edit_dist
  3   ,to_char(utl_match.edit_distance_similarity('test', NULL),'999')
  4      edit_dist_sim
  5   ,to_char(utl_match.jaro_winkler('test', NULL),'999d9999')
  6      jaro_winkler
  7   ,to_char(utl_match.jaro_winkler_similarity('test', NULL),'999')
  8      jaro_winkler_sim
  9  from dual;

EDIT EDIT JARO_WINK JARO
---- ---- --------- ----
  -1  125     .0000    0
We can see that using edit_distance on NULLs migth be dengerous.
All samples were run on Oracle 10g XE
分享到:
评论

相关推荐

    ibm_utl_sguide_9.41-win2k03-08_anyos_x86-64.iso

    x3650m3安装操作系统引导盘,亲测安装win2003 server可用。附件是网盘链接地址,永久,不能用给我留言 谢谢

    ibm_utl_mptsas_cfggen-1.16.00.04_windows_32-64

    标题“ibm_utl_mptsas_cfggen-1.16.00.04_windows_32-64”指的是IBM提供的一款实用工具,专门针对MPTSAS(Multi-Path To SAS)控制器的配置生成器。这个工具的版本是1.16.00.04,适用于Windows 32位和64位操作系统。...

    通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求

    ### 通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求 #### 概述 在Oracle环境中,经常需要与外部系统进行交互,特别是在需要从Web服务器获取数据或向其发送数据的情况下。`UTL_HTTP`是Oracle提供的一款强大工具...

    ibm_utl_dsa_dsytb7x-9.40_portable_windows_x86-64

    IBM服务器DSA(动态系统诊断),window系统下手机服务器日志,如有疑问请留言。

    lnvgy_utl_lxcer_onecli01r-2.6.0_rhel_x86-64.rpm

    Lenovo XClarity Essentials OneCLI是多个命令行应用程序的集合,可用于配置服务器,收集服务器的服务数据,更新固件和设备驱动程序,以及在服务器上执行电源管理功能。 Lenovo XClarity Essentials OneCLI(OneCLI...

    UTL_FILE用法详解

    `FUNCTION UTL_FILE.FOPEN (location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2) RETURN file_type;` 其中,location 是文件地址,filename 是文件名,open_mode 是打开文件的模式。open_mode 有...

    ibm_utl_sguide_8.42_anyos_x86-64.iso

    ibm_utl_sguide_8.42_anyos_x86-64.iso

    oracle plsql 通过utl_http调用 webservice

    Oracle PL/SQL是一种在Oracle数据库中编写存储过程和函数的语言,它结合了SQL的数据库操作能力和PL/SQL的编程灵活性。在本示例中,我们将深入探讨如何利用UTL_HTTP包来调用Web Service,这是一个非常实用的功能,...

    oracle utl_file包的用法

    ### Oracle UTL_FILE 包详解 #### 概述 `UTL_FILE`是Oracle数据库中一个重要的包,它提供了一套完整的文件输入/输出(I/O)操作接口,允许PL/SQL程序直接读写文件系统中的文件。这使得在Oracle环境中进行文件处理...

    oracle利用UTL-HTTP包访问SOAP、HTTP接口并通过管道函数解析xml响应文件用游标以表方式输出

    ### Oracle 使用 UTL_HTTP 访问 SOAP/HTTP 接口并解析 XML 响应 #### 一、使用 utl_http 包之前需要做的数据库配置 为了确保 Oracle 数据库能够通过网络进行 HTTP 请求,首先需要对数据库进行一些配置,具体包括...

    utl_http.request包探测基本信息.txt

    根据提供的文件信息,我们可以推断出此文档与Oracle数据库中的UTL_HTTP包有关,并涉及到如何利用该包进行一些基本信息的探测。以下将详细介绍UTL_HTTP包的基本概念、用途以及示例代码中的具体应用场景。 ### UTL_...

    oracle注入utl_http方法.doc

    Oracle 注入 utl_http 方法 Oracle 注入 utl_http 方法是指攻击者使用 Oracle 数据库的 UTL_HTTP 包来实现注入攻击的方法。UTL_HTTP 是 Oracle 提供的一个包,用于通过 HTTP 协议从远程服务器获取数据。攻击者可以...

    matlab导入excel代码-utl_multiple-regressions-using-arrays:使用数组的线性回归或逐行回归。关键

    matlab导入excel代码utl_multiple-regressions-使用数组 使用数组的线性回归或逐行回归。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java ...

    Oracle UTL_FILE的使用

    Oracle学习]ORACLE的UTL_FILE包简析 包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取

    在oracle9i中设置utl_file_dir参数.txt

    在Oracle 9i数据库系统中,`UTL_FILE_DIR`参数是用于控制PL/SQL程序在执行时可以访问的文件目录的重要配置项。这个参数的设置对于实现数据的读写操作、日志记录以及与其他文件系统的交互至关重要。下面将详细探讨...

    utl_file包介绍

    Oracle UTL_FILE 包概述 UTL_FILE 包是 Oracle 提供的一个文件操作包,主要用于读写文件和目录。该包的应用非常广泛,且非常实用,因为 Oracle 虽然有 SQL*Loader 可以将文本的内容读到数据库里,但是不能将数据库...

    oralce plsql 使用utl_tcp实现上传文件的功能

    UTL_TCP是Oracle提供的一种实用程序包,用于处理TCP/IP网络通信。在这个场景中,我们将探讨如何利用UTL_TCP来实现文件的上传功能,尤其是在不同服务器间进行FTP(File Transfer Protocol)操作。 首先,理解UTL_TCP...

    Oracle P/L SQL实现文件压缩、解压功能(最新版)

    这个"Oracle P/L SQL实现文件压缩、解压功能"的资源,包含了一个名为`UTL_ZIP.plb`的PL/SQL包体以及一个`ZIP包头说明和调用例子.txt`的文本文件,这将帮助我们理解如何在Oracle环境中处理ZIP文件。 `UTL_ZIP`是...

    用matlab运行MD5代码-utl_match_strings_regardless_of_the_order_of-letters:无论字

    用matlab运行MD5代码utl_match_strings_regardless_of_the_order_of-letters 无论字母顺序如何,都匹配字符串。 关键词:sas sql join 合并大数据分析宏 oracle teradata mysql sas 社区 stackoverflow 统计人工智能...

Global site tag (gtag.js) - Google Analytics