У меня есть две таблицы со следующими данными:Как соединить две таблицы с частичным совпадением
TableA.name
R4.23-Core-2
R4.23-Core-2
LA#213 CGHPBXsw01 127.213 0024-737e-e341
LA#252 CGHRack1sw01 127.252 0022-57ab-d781
SOC-01A-SW01
to - R4-DISTR-9512
to-R2-DISTR-5900-1
to-R3.25-EDGE
TableB.caption
R4.23-Core-2.ehd.ca
R4.23-Core-2.nhd.ca
CGHPBXsw01
CGHRack1sw01
SOC-01A-SW01
R4-DISTR-9512
R2-DISTR-5900-1.phsnc.
R3.25-EDGE.phsne.edjc.ca
Я попытался с помощью следующих присоединиться заявление, но это не похоже на работу для любой строки с а. в этом.
dbo.TableA.Name
INNER JOIN dbo.TableB.Caption
ON dbo.TableA.Name LIKE '%' + dbo.TableB.Caption + '%'
Я также пытаюсь использовать функцию замены, которая работает, но есть слишком много вариантов для замены с заменой.
Я мог бы попытаться использовать функцию ПРАВИЛЬНО или ЛЕВУЮ, чтобы нормализовать данные, но для строки, у которой нет '.' это вызовет ошибку. И я не знаю, как пропустить строку, которая не имеет.
Каков наиболее эффективный способ объединения этих двух таблиц?
Это соединение должно работать. Какой элемент в таблице A не подходит в TableB? – swandog
Почему вы не добавляете столбец с каким-то идентификатором и присоединяетесь к этому. – Mihai
@ user3072241 Если я правильно вас понимаю, вы пытаетесь присоединиться к строкам в A со строками в B, где столбец Caption в B полностью содержится в столбце Name A? Это то, что говорит ваше выражение выражения. Я попробовал это в SQL Fiddle (SQL Server 2012), и он работает так, как я ожидал. Вы используете другую базу данных? –