TABLE 1 TABLE 2
**ID NAME** **ID NAME**
2 Mcdonalds NY 2 McDonalds
3 KFC 3 Burger king
我已经加入了通过ID号链接它们的表。我正在创建一个异常报告。我正在苦苦挣扎的是一个查询,该查询将删除几乎相似的名称(纽约麦当劳-麦当劳),但选择明显的姓名(肯德基-汉堡王)。
我尝试使用where Table1.Name like Table2.Name or Concat
答案 0 :(得分:1)
这里是一种非常简单的方法来检查并排除几乎相等的那些
SELECT t1.id, t1.name, t2.name
FROM table1 t1
JOIN table2 t2 on t1.id = t2.id
WHERE t2.name NOT LIKE CONCAT('%',t1.name, '%') AND t1.name NOT LIKE CONCAT('%',t2.name, '%')
答案 1 :(得分:0)
尝试:
WITH TAB1(ID , NAME ) AS(
SELECT 2,'Mcdonalds NY' FROM DUAL UNION ALL
SELECT 3,'KFC' from dual )
--Select * from tab1;
,
TAB2(ID , NAME ) AS(
SELECT 2,'McDonalds ' FROM DUAL UNION ALL
SELECT 3,'Burger king' FROM DUAL )
select * from (
SELECT A.ID,A.NAME ,UTL_MATCH.edit_distance_similarity(A.NAME, B.NAME) similar
FROM TAB1 A
JOIN TAB2 B ON A.ID= B.ID
)
where similar >= 75
有关更多信息,https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle