2
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

4

2 回答 2

2

这是一个非常简单的方法来检查和排除那些几乎相等的

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, '%')
于 2018-10-15T13:26:32.657 回答
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

于 2018-10-15T13:19:19.560 回答