微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何比较相似数据

如何解决如何比较相似数据

我想将数据插入到 PL-sql

但我需要检查表是否有相似的数据。

如果表检查有类似信息,则无法添加

例如:

插入数据:ABCD 或 ABCE

表: enter image description here

标签设备有ABC,所以不能添加

我该如何编写这个程序?

解决方法

你可以在plsql中使用instr

示例:

declare 
x number;
begin
for i in (select distinct value from table)
loop

select count(1) into x 
from table2
where instr(Device,i.value) > 0;

if (x = 0) then
   insert into table2(Device) values(i.value);
end if;

commit;
end loop;
end;
,

相似还是相同的数据?这有很大的不同。因为如果您不想在您的列中使用相同的数据,您可以使该列唯一。但是如果你想检查类似的数据,呃,这有点难以实现,难以理解,而且这会彻底扼杀你的表现......但如果你仍然想走那条路,你可以查看{{3 }}

,

Isi 已经提到了算法;这是您可能正在寻找的示例。

当前表格内容:

SQL> select * from test;

COL
-----
ABC
ABD
ABR

以下是当前值与您要插入的某些字符串(ABCD、FDGH)的相似

SQL> select t.col,2         utl_match.jaro_winkler_similarity('ABCD',t.col) sim_abcd,3         utl_match.jaro_winkler_similarity('FDGH',t.col) sim_fdgh
  4  from test t;

COL     SIM_ABCD   SIM_FDGH
----- ---------- ----------
ABC           94          0
ABD           93         52
ABR           77          0

现在,由您决定哪个值将代表限制,并决定是否在该表中插入一个值。我们假设它是 90%。那么你会

SQL> insert into test (col)
  2    select '&&par_insert'
  3    from dual
  4    where 90 > (select max(utl_match.jaro_winkler_similarity('&&par_insert',a.col))
  5                from test a
  6               );
Enter value for par_insert: ABCD

0 rows created.

SQL>

对; ABCD 与任何当前值相似超过 90% 且未插入。

FDGH 怎么样?

SQL> undefine par_insert
SQL> /
Enter value for par_insert: FDGH

1 row created.

SQL> select * from test;

COL
-----
ABC
ABD
ABR
FDGH

SQL>

是的,它被插入了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?