比较包含其他字符串的字符串

时间:2019-06-26 19:07:48

标签: sql sql-server join

我正在比较两个表格,以匹配它们的地址行和邮政编码。但是,有时邮政编码(美国)的格式为28272-0516,而在另一些邮政编码中则为28272。无论破折号'-'后面是什么,都应正确匹配。

在SQL Server 17中,我使用CharIndex来定位破折号'-',但是由于并非所有邮政编码都包含破折号,因此出现了问题。

您是否认为我需要一些UNION才能捕获表a中不包含破折号的所有邮政编码,然后是包含破折号的,然后是包含破折号的表b,等等。

SELECT *
from a
inner join b
on 
AND a.addressline1 = b.addressline1
AND LTRIM(TRIM(LEFT(a.PostalCode,CHARINDEX('-',a.PostalCode)-1))) = LTRIM(TRIM(LEFT(b.VendorPostalCode,CHARINDEX('-',b.VendorPostalCode)-1)))

1 个答案:

答案 0 :(得分:0)

有一个无效的sintax
尝试

SELECT *
from a
inner join b on  a.addressline1 = b.addressline1
AND  case when  a.PostalCode,CHARINDEX('-', a.PostalCode) <>0  then 
   LTRIM(TRIM(LEFT(a.PostalCode,CHARINDEX('-', a.PostalCode)-1))) = 
     LTRIM(TRIM(LEFT(b.VendorPostalCode,CHARINDEX('-', b.VendorPostalCode)-1)))
   else  a.PostalCode = b.VendorPostalCode 
   END