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.
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 0Above 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 0We can see that using edit_distance on NULLs migth be dengerous.
All samples were run on Oracle 10g XE
相关推荐
x3650m3安装操作系统引导盘,亲测安装win2003 server可用。附件是网盘链接地址,永久,不能用给我留言 谢谢
标题“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环境中,经常需要与外部系统进行交互,特别是在需要从Web服务器获取数据或向其发送数据的情况下。`UTL_HTTP`是Oracle提供的一款强大工具...
IBM服务器DSA(动态系统诊断),window系统下手机服务器日志,如有疑问请留言。
`FUNCTION UTL_FILE.FOPEN (location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2) RETURN file_type;` 其中,location 是文件地址,filename 是文件名,open_mode 是打开文件的模式。open_mode 有...
Oracle PL/SQL是一种在Oracle数据库中编写存储过程和函数的语言,它结合了SQL的数据库操作能力和PL/SQL的编程灵活性。在本示例中,我们将深入探讨如何利用UTL_HTTP包来调用Web Service,这是一个非常实用的功能,...
ibm_utl_sguide_8.42_anyos_x86-64.iso
### Oracle UTL_FILE 包详解 #### 概述 `UTL_FILE`是Oracle数据库中一个重要的包,它提供了一套完整的文件输入/输出(I/O)操作接口,允许PL/SQL程序直接读写文件系统中的文件。这使得在Oracle环境中进行文件处理...
Oracle 注入 utl_http 方法 Oracle 注入 utl_http 方法是指攻击者使用 Oracle 数据库的 UTL_HTTP 包来实现注入攻击的方法。UTL_HTTP 是 Oracle 提供的一个包,用于通过 HTTP 协议从远程服务器获取数据。攻击者可以...
根据提供的文件信息,我们可以推断出此文档与Oracle数据库中的UTL_HTTP包有关,并涉及到如何利用该包进行一些基本信息的探测。以下将详细介绍UTL_HTTP包的基本概念、用途以及示例代码中的具体应用场景。 ### UTL_...
matlab导入excel代码utl_multiple-regressions-使用数组 使用数组的线性回归或逐行回归。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java ...
Oracle学习]ORACLE的UTL_FILE包简析 包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取
### Oracle 使用 UTL_HTTP 访问 SOAP/HTTP 接口并解析 XML 响应 #### 一、使用 utl_http 包之前需要做的数据库配置 为了确保 Oracle 数据库能够通过网络进行 HTTP 请求,首先需要对数据库进行一些配置,具体包括...
在Oracle 9i数据库系统中,`UTL_FILE_DIR`参数是用于控制PL/SQL程序在执行时可以访问的文件目录的重要配置项。这个参数的设置对于实现数据的读写操作、日志记录以及与其他文件系统的交互至关重要。下面将详细探讨...
Oracle UTL_FILE 包概述 UTL_FILE 包是 Oracle 提供的一个文件操作包,主要用于读写文件和目录。该包的应用非常广泛,且非常实用,因为 Oracle 虽然有 SQL*Loader 可以将文本的内容读到数据库里,但是不能将数据库...
UTL_TCP是Oracle提供的一种实用程序包,用于处理TCP/IP网络通信。在这个场景中,我们将探讨如何利用UTL_TCP来实现文件的上传功能,尤其是在不同服务器间进行FTP(File Transfer Protocol)操作。 首先,理解UTL_TCP...
这个"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 无论字母顺序如何,都匹配字符串。 关键词:sas sql join 合并大数据分析宏 oracle teradata mysql sas 社区 stackoverflow 统计人工智能...
### UTL_MAIL与Oracle Scheduler详解 #### UTL_MAIL:Oracle中的邮件发送工具 UTL_MAIL是Oracle提供的一个用于发送电子邮件的内置程序包。通过UTL_MAIL,开发人员可以在Oracle环境中轻松实现邮件通知功能,这对于...