2 Stimmen

Können Sie mit einem LIKE-Operator auf JOIN w/ TSQL aktualisieren?

Ich führe einen umfangreichen Import aus einer kommagetrennten Datei durch und möchte während des Sprocs, der am Ende des Importvorgangs ausgeführt wird, eine Arbeitgeber-ID nachschlagen. Das Problem, das ich habe, ist, dass mein LIKE nicht zu funktionieren scheint ... also wollte ich sehen, ob die Syntax korrekt ist.

Hinweis - Dadurch werden alle Datensätze = der Name des Arbeitgebers aktualisiert, aber alles LIKE 'foo%' wird nicht aktualisiert

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

Ist es möglich, ein LIKE auf diese Weise durchzuführen, oder muss ich eine weitere Aktualisierung außerhalb dieser Verbindung vornehmen?

3voto

Quassnoi Punkte 396418

Para MS SQL 2008 :

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

Para 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

0voto

Adriaan Davel Punkte 630

Die Sache, die mich normalerweise bei der Verwendung von LIKE in einem JOIN erwischt, sind CHAR-Datentypen. Sie müssen daran denken, ein RTRIM durchzuführen, bevor Sie das % hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X