我有两个表REPORT
,RPT_ID
和RPT_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_NM
加入DOC_NM
表格中更新此列,但DOC_NM
不完全匹配。
答案 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