2009-02-27 9 views
2

コンマで区切られたファイルから大量のインポートを行い、インポート処理の最後に実行されるsproc中に雇用主IDを検索する必要があります。私が抱えている問題は、私のLIKEがうまく動作していないということです。そのため、構文が正しいかどうかを見たいと思っていました。JOIN w/TSQLでLIKE演算子を使用して更新できますか?

注 - これは、すべてのレコードを更新します=「のfoo%」LIKE雇用者名以外のものは更新されません

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 

は、このようにLIKEを行うことが可能ですか私は何をする必要がありますこの参加外の別のアップデート? MS SQL 2008については

答えて

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の場合:

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

通常のJOINでLIKE使用して私をキャッチする事がCHARデータ型は、あなたが前にRTRIMを行うことを覚えておく必要があります%

を追加します
関連する問題