Обновите table1.Col1 с Table2.Col1, когда какой-либо устав в столбце совпадет - PullRequest
0 голосов
/ 31 мая 2019

У меня есть две таблицы, я хочу обновить 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 голосов
/ 31 мая 2019

Попробуйте это

Update A
set
A.Col1 = B.Col1
from 
Table 1 A, Table 2 B
where 
A.Col2 like '%' + B.Col1 + '%'
0 голосов
/ 31 мая 2019

Вы используете не тот столбец, верно? В вашем текущем UPDATE вы пытаетесь найти значение Table2.Col1 в Table1.Col2. В этом случае нет совпадения между этими столбцами. Вы описываете матч следующим образом:

Я хочу обновить строки, в которых только некоторые символы 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 + '%' 

демо на dbfiddle.uk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...