当列中的某些章程匹配时,用Table2.Col1更新table1.Col1

时间:2019-05-31 06:41:07

标签: sql-server sql-update

我有两个表,我想用Col1中的Tbl1更新Col1中的Tbl2。但是我想更新仅Col2.Tbl1的某些字符与Col2.Tbl2匹配的行

表1

PK  Col1    Col2
1   NULL    abc123xyz
2   NULL    3da234oaz
3   NULL    dbc567gyz
4   NULL    agc890hyz
5   NULL    adc012jyz

表2

PK  Col1    Col2
1   001     123
2   002     234
3   003     567
4   004     890
5   005     012

当前查询:

Update A
set A.Col1 = B.Col1
from Table 1 A, Table 2 B
where A.Col2 like %B.Col1%

但这没用。

2 个答案:

答案 0 :(得分:0)

您使用了错误的列,对吧?在当前的UPDATE中,您尝试在Table1.Col2中找到Table2.Col1的值。在这种情况下,这些列之间不匹配。您将匹配描述如下:

  

我要更新仅 Tbl1.Col2 的某些字符与 Tbl2.Col2

匹配的行

因此,您可以使用CHARINDEXLIKE使用以下解决方案之一:

UPDATE A
  SET A.Col1 = B.Col1
FROM  Table1 A, Table2 B
WHERE CHARINDEX(B.Col2, A.Col2) > 0

...使用INNER JOIN使用以下内容:

UPDATE A
  SET A.Col1 = B.Col1
FROM Table1 A INNER JOIN Table2 B ON CHARINDEX(B.Col2, A.Col2) > 0

...或使用LIKE(但具有正确的列):

UPDATE A
  SET A.Col1 = B.Col1
FROM Table1 A, Table2 B
WHERE A.Col2 LIKE '%' + B.Col2 + '%' 

demo on dbfiddle.uk

答案 1 :(得分:0)

尝试一下

Update A
set
A.Col1 = B.Col1
from 
Table 1 A, Table 2 B
where 
A.Col2 like '%' + B.Col1 + '%'