我正在比较两个表格,以匹配它们的地址行和邮政编码。但是,有时邮政编码(美国)的格式为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)))
答案 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