2014-12-18 3 views
1

У меня есть две отдельные таблицы данных.Использование LIKE в запросе JOIN

Это Table1:

Customer Name Address 1  City  State Zip 
ACME COMPANY 1 Street Road Maspeth NY  11777 

Это Table2:

Customer Active Account New Contact 
ACME  Y    John Smith 

Я бегу запрос, используя JOIN где включать только строки, где соединяемые поля из обеих таблиц равны.

Я присоединяюсь Customer Name от Table1 и Customer от Table2. Очевидно, нет матча. То, что я пытаюсь сделать, это показать результаты, в которых первые 4 символа совпадают в каждой таблице, поэтому я получаю результат или совпадение. Возможно ли это с использованием LIKE или LEFT?

+2

Зависит от того, какой тип SQL-сервера вы используете для синтаксиса, который вам нужен. – Avitus

+0

Простой ответ: «Да, это возможно». что ты уже испробовал? – AWinkle

+0

Какая у вас СУБД? –

ответ

2

Похоже, это должно работать:

Select * 
From Table1, Table2 
Where Table1.CustomerName Like Cat('%',Trim(Table2.CustomerName),'%') 
+0

Синтаксис может немного меняться между системами, такими как функция CAT() ... –

+0

Спасибо за это. CONCAT для MySQL – pa1983

0

Да, это возможно. Но я сомневаюсь, что каждое имя в таблице 2 имеет только 4 буквы, так что вот решение, в котором имя в таблице2 является началом имени в таблице1.

Включить строку %. Это заполнитель/подстановочный знак для «ничего или ничего».

SELECT 
* 
FROM 
Table1 
INNER JOIN Table2 ON Table1.CustomerName LIKE CONCAT(Table2.Customer, '%'); 

Конкатенация строк может работать по-разному между СУБД.

+0

Ницца! Как бы вы справились с «совпадением первых четырех символов в каждой таблице»? – Mike

+1

Я был в сомнении, что каждое имя в таблице 2 имеет только 4 буквы, поэтому я предоставил решение, в котором имя в таблице2 является началом имени в таблице1. – fancyPants

+0

На самом деле LIKE может быть лучше для меня, слишком много матчей, где критерии были выполнены, но не «истинное» совпадение. Позвольте мне попробовать LIKE CONCAT, посоветуйте. –

0

Если вы только пытаетесь соответствовать первых четырех символов, которые можно использовать следующим образом:

SELECT --your columns 
FROM Table1 T1 
JOIN Table T2 
ON 
SUBSTRING (T1.CustomerName ,1, 4) = SUBSTRING (T2.Customer ,1, 4) 
+0

Я сомневаюсь, что он может сделать это предположение. –

+0

Я тоже, но он говорит, что ему нужны первые четыре символа, следовательно, запрос. – Codeek

+0

Это правда, он сказал 4 символа ... –

2

Это, вероятно, есть, хотя это может зависеть от используемой базы данных. Например, в Microsoft SQL, он будет работать, чтобы использовать Somthing так:

SELECT * 
FROM [Table1] INNER JOIN [Table2] 
ON LEFT([Table1].[Customer Name],4) = LEFT([Table2].[Customer],4) 

Синтаксис может отличаться при использовании другой СУБД. Что вы пытаетесь это сделать?

+0

Спасибо, я попробую это. MS ACCESS. Я на самом деле создаю новую таблицу, объединяющую данные из обоих. –

+0

Это очень понравилось! –

+0

Рад, что это сработало для вас. Я был бы признателен, если вы проверите этот ответ как правильный. –

Смежные вопросы