你能在JOIN和TSQL上使用LIKE运算符进行更新吗?

时间:2009-02-27 19:40:22

标签: tsql join sql-like

我正在从逗号分隔文件中进行大量导入,并希望在导入过程结束时执行的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或者我是否需要在此联接之外进行其他更新?

2 个答案:

答案 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