我有两个表,我想用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%
但这没用。
答案 0 :(得分:0)
您使用了错误的列,对吧?在当前的UPDATE
中,您尝试在Table1.Col2中找到Table2.Col1的值。在这种情况下,这些列之间不匹配。您将匹配描述如下:
我要更新仅 Tbl1.Col2 的某些字符与 Tbl2.Col2
匹配的行
因此,您可以使用CHARINDEX
或LIKE
使用以下解决方案之一:
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 + '%'
答案 1 :(得分:0)
尝试一下
Update A
set
A.Col1 = B.Col1
from
Table 1 A, Table 2 B
where
A.Col2 like '%' + B.Col1 + '%'