我正在从逗号分隔文件中进行大量导入,并希望在导入过程结束时执行的sproc期间查找雇主ID。我遇到的问题是我的LIKE似乎不起作用......所以我想看看语法是否正确。
注意 - 这将更新所有记录=雇主名称,但任何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或者我是否需要在此联接之外进行其他更新?
答案 0 :(得分:3)
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
答案 1 :(得分:0)
在JOIN中使用LIKE通常会引起我注意的是CHAR数据类型,你需要记住在添加%
之前做一个RTRIM