Сравнение строк, содержащих другие строки - PullRequest
0 голосов
/ 26 июня 2019

Я сравниваю две таблицы в соответствии с их адресной строкой и почтовым индексом. Однако иногда Почтовый индекс (США) имеет формат 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 голосов
/ 26 июня 2019

неверный синтаксис
попробуй

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...