2010-12-13 39 views
2

Je suis dans le besoin d'une requête (ou procédure stockée plutôt) pour SQL Server où je besoin de comparer les données de deux tables différentes avec la structure suivanteSQL Server - Match String partiel - deux colonnes de différentes tables

Tableau 1

ID  Text  Table2ID 
1  Chris 
2  John 
3  Paul 

Table2

ID  Text 
1  Mitchell Johnson 
2  Chris Martin 
3  Steven 

par compa sonner les au-dessus de deux tables, je dois obtenir le « ID » de table2 et les insérer dans la colonne « Table2ID » du premier tableau

critères de comparaison: -

Le mot complet dans la colonne « Texte » de 'Table1' devrait être contenue dans la colonne 'Text' de 'Table2'

Dans notre cas, nous obtiendrions 'ID' des deux premières lignes de table2 (puisque le mot John est contenu dans 'Mitchell Johnson' et le le mot Chris est contenu dans 'Chris Martin' et Paul n'est pas contenu dans 'Table2')

ld je réalise ceci? Ce serait bien si quelqu'un ici est en mesure de faire la lumière sur mon chemin

Cordialement, Raghuraman.V

+1

Comment proposeriez-vous de gérer un double match, c'est-à-dire si vous aviez "Chris Johnson", comment le traiteriez-vous? – JNK

+0

@JNK: bonne question – RedFilter

+0

@RedFilter - quelque chose de très similaire m'a mordu à l'arrière avant un processus similaire :) – JNK

Répondre

2

La réponse abstraite est:

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

Plus précisément:

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

Que voulez-vous dire par «réponse abstraite»? –

+0

Résumé signifiant pas spécifique à votre cas, une réponse généralisée. C'est le modèle que vous pouvez utiliser la prochaine fois que vous avez besoin de faire un type de requête 'UPDATE FROM'. – RedFilter

+0

Par curiosité (si table2 contenait aussi l'enregistrement '4 | John Smith') devineriez-vous que' table1.table2Id' serait égal à 1 ou 4? –