2

我正在从逗号分隔文件进行大量导入,并希望在导入过程结束时执行的存储过程中查找雇主 ID。我遇到的问题是我的 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,或者我是否需要在此加入之外进行另一次更新?

4

2 回答 2

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
于 2009-02-27T19:45:17.700 回答
0

在 JOIN 中使用 LIKE 通常让我抓到的是 CHAR 数据类型,您需要记住在添加 % 之前执行 RTRIM

于 2014-04-08T06:44:47.073 回答