如何在我的联接中帮助实现更多逻辑?

问题描述 投票:0回答:1

我目前在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函数。

sql ssms
1个回答
0
投票

您可以在JOIN中添加其他条件

SELECT *
FROM T1
JOIN T2
  ON  T1.fieldA = T2.fieldA
 AND  T1.fieldB = Somefunction(T2.fieldB)
© www.soinside.com 2019 - 2024. All rights reserved.