2009-02-27 19 views
2

Virgülle ayrılmış bir dosyadan büyük bir ithalat yapıyorum ve içe aktarma işleminin sonunda yürütülen sproc sırasında bir işveren kimliğini aramak istiyorum. Sorun şu ki, LIKE'mın işe yaramadığı ... bu yüzden sözdiziminin doğru olup olmadığını görmek istedim.JOIN w/TSQL üzerinde bir LIKE operatörü kullanarak güncelleme yapabilir misiniz?

Not - Bu bu şekilde bir GİBİ yapmak mümkün mü tüm kayıtları =

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 

güncellenmiş almazsınız 'foo%' GİBİ işveren adını başka bir şey güncelleme veya yapmam gereken yapacak Bu katılmanın dışında başka bir güncelleme var mı? MS SQL 2008 için

cevap

3

:

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

MS SQL 2005 için:

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

genellikle JOIN içinde GİBİ kullanarak beni yakalar şey CHAR veri türleri, daha önce bir RTRIM yapmak için hatırlamak gerek olduğunu %

'u eklersiniz
İlgili konular