0

我有两个表REPORTRPT_IDRPT_NM

RPT_ID   RPT_NM  
2345     UNIVERSAL
3456     FIELD
4567     BOILER
5678     NORTHLAND
5789     CANADA

和另一个表JOB,其中RPT_ID添加了作为外键的列,其数据如下所示

JOB_NBR   DOC_NM              RPT_ID
23        FIELD_0             NULL
34        BOILER_2            NULL
45        BOILER_4            NULL
56        CANADA-REVISED_5    NULL
67        UNIVERSAL_23        NULL

我需要REPORT在加入时从表中更新此列RPT_NMDOC_NMDOC_NM不完全匹配。

4

2 回答 2

0
Update JOB set RPT_ID=r.RPT_ID
FROM REPORT r
WHERE JOB.DOC_NM like r.RPT_NM+'%'
于 2013-05-18T18:46:09.010 回答
0

我假设 JOB 中的 DOC_NM 直到第一个 '_' 或 '-' 与 REPORT 中的 RPT_NM 匹配,否则此解决方案将不起作用。

UPDATE j
  SET j.RPT_ID = r.RPT_ID
FROM REPORT AS r
  INNER JOIN JOB AS j
    ON r.RPT_NM = SUBSTRING(j.DOC_NM, 0, CHARINDEX('_', j.DOC_NM))
    OR r.RPT_NM = SUBSTRING(j.DOC_NM, 0, CHARINDEX('-', j.DOC_NM))
;

您可以使用SUBSTRING函数和CHARINDEX来匹配 JOB 的 DOC_NM 到第一个 '_' 或 '-' 到 REPORT 的 RPT_NM。

如果你想玩它,这里是关于 SQLFiddle 的解决方案:http ://sqlfiddle.com/#!6/46c3f/9

于 2013-05-18T20:43:59.220 回答