我目前在sql语句中有一些逻辑,可以删除所有标点符号,因此我可以轻松比较这两个字段;但是,我现在遇到一个问题,我的A表的银行名称为BBVA BANCOMER SA INSTITUCION DE BANCA MULTIPLE, GRUPO FINANCIERO BBVA BANCOMER
,而我的B表的机构名称为BBVA BANCOMER
,以及其他与表A不匹配的变体。
此问题我有多个不同的银行名称。
如何在我的联接中添加like '%<bank name here>%'
以查找所有匹配项?谢谢。
SELECT B.RECORD_KEY, A.[R.F.C.], A.[Bank Name]
FROM srcENRICH.dbo.FICO_BNKA_RFC_E AS A INNER JOIN
dbo.BM_BNKA_SRCENRICH_BM_SWIFT_S AS B ON REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(sA.[Bank Name], ',', ''), '.', ''), '-', ''), '+', ''), '/', ''), '''', ''), '&', 'AND'), '(', ''), ')', '')
= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(B.INSTITUTION_NAME, ',', ''), '.', ''), '-', ''), '+', ''), '/', ''), '''', ''), '&', 'AND'), '(', ''), ')', '')
我当时在想WHERE
子句;但是,我不知道如何基于LIKE
函数将两个字段进行比较。如果我找到了解决方案,是否需要为每个需要的银行做同样的事情?
我目前在删除标点符号的基础上获得了31个匹配项;但是,我的预期输出是1,650以上。这是因为BANCOMER仅基于确切名称在任何地方都没有匹配项,但是,当我进入表B数据库时,LIKE '%BANCOMER%'
大约有1600个输出。我需要实现一个LIKE
函数。
您可以在JOIN中添加其他条件
SELECT *
FROM T1
JOIN T2
ON T1.fieldA = T2.fieldA
AND T1.fieldB = Somefunction(T2.fieldB)