使用LIKE进行SQL部分字段匹配

时间:2014-07-24 17:25:02

标签: sql ingres

我在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中的整个forename出现在table1&#34中forename的某个地方?

我有点想说

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

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

1 个答案:

答案 0 :(得分:2)

现在我很清楚答案......

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