更新现有表中新添加的列

时间:2013-05-18 18:38:41

标签: sql-server

我有两个表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

我需要在REPORTRPT_NM加入DOC_NM表格中更新此列,但DOC_NM不完全匹配。

2 个答案:

答案 0 :(得分:0)

Update JOB set RPT_ID=r.RPT_ID
FROM REPORT r
WHERE JOB.DOC_NM like r.RPT_NM+'%'

答案 1 :(得分: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