2009-02-27 3 views
2

Ich mache einen großen Import von einer durch Komma getrennten Datei und möchte eine Arbeitgeber-ID während des Sprocs suchen, der am Ende des Importprozesses ausgeführt wird. Das Problem, das ich habe, ist, dass mein LIKE nicht zu funktionieren scheint ... also wollte ich sehen, ob die Syntax korrekt ist.Können Sie mit einem LIKE-Operator auf JOIN w/TSQL aktualisieren?

Hinweis - Dies wird aktualisiert alle Datensätze = den Arbeitgeber Name, aber so etwas wie ‚foo%‘ nicht

UPDATE UnitOfWork 
SET EmployerId = SG.EmployerId 
FROM UnitOfWork UO  
LEFT JOIN SpecialtyGroup SG ON SG.Name LIKE UO.EmployerName + '%' 
WHERE SG.EmployerId IS NOT NULL 

aktualisiert erhalten, ist es möglich, eine LIKE auf diese Weise zu tun, oder muss ich tun ein weiteres Update außerhalb dieses Joins?

Antwort

3

Für MS SQL 2008:

MERGE 
UnitOfWork UO 
USING SpecialtyGroup SG 
    ON SG.Name LIKE UO.EmployerName + '%' 
WHEN MATCHED THEN 
    UPDATE 
    SET UO.EmployerId = SG.EmployerId 

Für MS SQL 2005:

WITH so AS 
(
    SELECT UO.EmployerID, SG.EmployerID AS newEmployerID 
    FROM UnitOfWork UO  
    LEFT JOIN SpecialtyGroup SG ON SG.Name LIKE UO.EmployerName + '%' 
    WHERE SG.EmployerId IS NOT NULL 
) 
UPDATE so 
SET EmployerId = newEmployerID 
0

Die Sache, die mich in der Regel fängt mit der Verwendung wie in einem JOIN ist CHAR-Datentypen, müssen Sie daran denken, eine RTRIM zu tun, bevor Sie fügen die%

hinzu
Verwandte Themen