我正在比较两个表以匹配它们的地址行和邮政编码。然而,有时邮政编码(美国)的格式为28272-0516,而在其他情况下仅为28272。无论短划线'-‘后面是什么,它们都应该正确匹配。
在SQL Server17中,我使用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)))
发布于 2019-06-26 19:11:42
存在无效语法,请尝试:
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
https://stackoverflow.com/questions/56779566
复制相似问题