大佬教程收集整理的这篇文章主要介绍了如何比较相似数据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将数据插入到 PL-sql。
但我需要检查表是否有相似的数据。
如果表检查有类似信息,则无法添加
例如:
插入数据:ABCD 或 ABCE
表: enter image description here
标签设备有ABC,所以不能添加。
我该如何编写这个程序?
示例:
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>
是的,它被插入了。
以上是大佬教程为你收集整理的如何比较相似数据全部内容,希望文章能够帮你解决如何比较相似数据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。