1

我在 Ingres 数据库 table1 和 table2 中有两个表。除其他外,两者都包含以下字段;-

date_of_birth ingresdate
forename c35
surname c35

我想将一张桌子上的人与另一张桌子相匹配。这些名称来自不同的来源,因此并不相同。他们也在不同的情况下。

我想要 table1 和 table2 中可以匹配名称的所有记录

到目前为止,我使用了以下 SQL

SELECT a.forename, a.surname, a.birth_date, b.forename, b.surname
FROM table1
LEFT JOIN table2 ON c.birth_date = b.birth_date AND left(upper(squeeze(b.name)), 3) = left(upper(squeeze(c.forename )), 3)
AND left(upper(squeeze(b.surname)), 3) = left(upper(squeeze(c.surname )), 3)

这没关系,而且效果很好,除了下面这样的情况

表格1

forename = RAJA MOHAMMAD
surname = ZUBAIR        

表2

forename = MOHAMMAD
surname = ZUBAIR  

有时会错过名字/中间名。

我怎么说“匹配 table2 中的整个名字出现在 table1 的名字中的某处”?

我有点想说

WHERE squeeze(trim(upper(2.forename))) LIKE '% squeeze(trim(upper(1.forename))) %' 

但是你不能在 SQL 中做到这一点?

4

1 回答 1

2

答案很明显,现在我想起来了……

WHERE squeeze(trim(upper(2.forename))) LIKE '%' + squeeze(trim(upper(1.forename))) + '%'
于 2014-07-25T06:05:41.760 回答