0
Можете ли вы выполнить обновление с помощью оператора LIKE в JOIN с TSQL?
Я выполняю большой импорт из файла с разделителями-запятыми и хочу найти идентификатор работодателя во время sproc, который выполняется в конце процесса импорта. Проблема, с которой я столкнулся, заключается в том, что мой LIKE, похоже, не работает ... поэтому я хотел проверить правильность синтаксиса.
Примечание. При этом будут обновлены все записи = имя работодателя, но что-либо, КАК 'foo%', обновляться не будет.
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 таким образом или мне нужно сделать еще одно обновление вне этого соединения?
Ответов (2)2
0
Для MS SQL 2008
:
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