2010-12-13 4 views
2

ich in der Notwendigkeit einer Abfrage bin (oder gespeicherte Prozedur eher) für SQL Server, wobei I-Daten von zwei verschiedenen Tabellen benötigenSQL Server - Teil String Match - zwei Säulen unterschiedlicher Tabellen

mit folgenden Struktur vergleichen

Tabelle 1

ID  Text  Table2ID 
1  Chris 
2  John 
3  Paul 

Table2

ID  Text 
1  Mitchell Johnson 
2  Chris Martin 
3  Steven 

Durch compa klingelt die beide oben genannten Tabellen, muß ich die ‚IDs‘ von table2 bekommen und fügen Sie sie in die "Table2ID-Spalte der ersten Tabelle

Vergleichskriterien: -

Das vollständige Wort in‚Text‘Spalte von 'Table1' sollte in 'Text' Spalte von 'Table2' enthalten sein

In unserem Fall würden wir 'IDs' der ersten zwei Zeilen von Tabelle2 erhalten (da das Wort John in 'Mitchell Johnson' und der Wort Chris ist in 'Chris Martin' enthalten und Paul ist nicht in 'Tabelle2' enthalten.

Wie cou Kann ich das erreichen? Es wäre schön, wenn jemand hier aus der Lage ist, Licht auf meinem Weg zu vergießen

Grüße, Raghuraman.V

+1

Wie würden Sie vorschlagen, ein Doppelmatch zu bearbeiten, dh wenn Sie "Chris Johnson" hätten, wie würden Sie es behandeln? – JNK

+0

@JNK: gute Frage – RedFilter

+0

@RedFilter - etwas sehr ähnliches hat mich in den Rücken vorher auf einem ähnlichen Prozess gebissen :) – JNK

Antwort

2

Die abstrakte Antwort lautet:

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

Im Einzelnen:

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

Was meinst du mit 'abstrakte Antwort'? –

+0

Abstrakte Bedeutung nicht spezifisch für Ihren Fall, eine verallgemeinerte Antwort. Es ist das Muster, das Sie verwenden können, wenn Sie das nächste Mal eine Abfrage vom Typ "UPDATE FROM" durchführen müssen. – RedFilter

+0

Aus Neugier (würde Tabelle2 auch den Datensatz '4 | John Smith' enthalten) würden Sie vermuten, dass' table1.table2Id' gleich 1 oder 4 wäre? –