将一个 table 的名字与另一个 table 的名字匹配

Match names from one table with names from other

我有一个table

CID FirstName LastName Loc
123 Brad Shaw ASD
234 Chad Reed SES
345 Bryan Miles WED
456 Mr Bradley Knight ASD
567 Doctor Chadwick Prince WED
678 Mrs Bryana Yang SES
789 Arty-stry Blue POR

另一个table

FirstName
Bryan
Ben
Brad
Chad

我希望得到一个结果,将第 2 table 中的所有名称与第 1 table 中的名称相匹配,无论第 2 table 中的名称是否构成第 1 table.

CID FirstName LastName Loc TABLE2_MATCH
123 Brad Shaw ASD Brad
234 Chad Reed SES Chad
345 Bryan Miles WED Bryan
456 Mr Bradley Knight ASD Brad
567 Doctor Chadwick Prince WED Chad
678 Mrs Bryana Yang SES Bryan
789 Arty-stry Blue POR No_match

我有数千个名字,我需要找到更好的方法来执行此操作,目前我正在尝试执行 IN 语句,但它匹配确切的名称,因为我希望子字符串也匹配。我希望这是清楚的。很高兴提供更多信息

查找表 1 中的 FirstNamelike 表 2 的 FirstName 包裹在 '%' 中的所有外连接:

select
  a.CID,
  a.FirstName,
  a.LastName,
  a.Loc,
  coalesce(b.FirstName, 'No_match') as TABLE2_MATCH
from table1 a
left join table2 b on lower(a.FirstName) like '%' || lower(b.FirstName) || '%'

字符串 X 是字符串 Y 的子字符串可以表示为 Y like '%X%'.
lower() 的调用使其不区分大小写,尽管如果您删除对 lower().

的调用,看看它是否仍然有效