2010-12-13 3 views
2

Я нахожусь в необходимости запроса (или хранимой процедуры, а) для SQL Server, в котором мне нужно сравнить данные двух разных таблиц со следующей структуройSQL Server - Частичная строка матч - две колонки разных таблиц

Таблица 1

ID  Text  Table2ID 
1  Chris 
2  John 
3  Paul 

Table2

ID  Text 
1  Mitchell Johnson 
2  Chris Martin 
3  Steven 

По Compa кольцо выше двух таблиц, мне нужно, чтобы получить «идентификаторы» из table2 и вставить их в столбце «Table2ID» первой таблицы

критерии сравнения: -

Полное слово «Текст» колонка таблицы «Таблица 1» должны содержаться в столбце «Текст» таблицы «Таблица 2»

В нашем случае мы получили бы «идентификаторы» первых двух строк из таблицы2 (поскольку слово «Джон» содержится в «Митчелл Джонсон» и слово Крис содержится в «Крисе Мартине», а Пол не содержится в «Таблице 2»)

Как cou И я этого добился? Было бы неплохо, если бы кто-то здесь может пролить свет на моем пути

С уважением, Raghuraman.V

+1

Как бы вы предложили обработку двойного совпадения, то есть, если бы у вас был «Крис Джонсон», как бы вы относились к нему? – JNK

+0

@JNK: хороший вопрос – RedFilter

+0

@RedFilter - что-то очень похожее укусило меня в тылу перед тем же процессом :) – JNK

ответ

2

абстрактный ответ:

UPDATE Table 
SET Table.col1 = other_table.col1 
FROM Table 
INNER JOIN other_table ON Table.id = other_table.id 

В частности:

update Table1 
set Table1.Table2ID = Table2.ID 
from Table1 
inner join Table2 on Table2.Text like '%' + Table1.Text + '%' 
+0

Что вы подразумеваете под «абстрактным ответом»? –

+0

Абстрактное значение, не соответствующее вашему делу, обобщенный ответ. Это шаблон, который вы можете использовать в следующий раз, когда вам нужно выполнить запрос типа UPDATE FROM'. – RedFilter

+0

Из любопытства (если таблица2 также содержит запись '4 | John Smith'), вы бы предположили, что' table1.table2Id' будет равен 1 или 4? –

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