Как проверить, существует ли одно значение столбца в другом значении столбца, используя оператор like - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь найти шаблон одного столбца в другом столбце и пытаюсь извлечь числа.

Моя таблица:

ID        aggregatedID
-----------------------
12345     null
234567    null 
34567     null 
316645    null
ID_666    12345@20200131.000@@@|234567@20200131.000@@@|34567@20200131.000@@@|316645@20200131.000@@@

В моей таблице первые 4 идентификатора существуют в aggregatedID с конкатенацией специальных символов. Я должен получить идентификатор, т.е. ID_666 и обновить первые 4 идентификатора, где aggregatedId имел их с другим столбцом.

Это мой ожидаемый результат:

ID        aggregatedID    Agg_ID
--------------------------------
12345     null            ID_666   
234567    null            ID_666 
34567     null            ID_666  
316645    null            ID_666
ID_666    12345@20200131.000@@@|234567@20200131.000@@@|34567@20200131.000@@@|316645@20200131.000@@@

Я пытался с подстрокой .ie извлечь число после '|' и перед '@' + первое число перед '@'

SUBSTRING(aggregatedID,CHARINDEX('|',aggregatedID)+1,LEN(aggregatedID))

Но это возвращает всю строку после первого '|'.

Я пытался сопоставить aggregatedID с идентификатором, используя лайк, но не получал никаких данных.

select ID, aggregatedId 
from table m
where m.aggregatedID like'%' + ID + '%'

Может кто-нибудь помочь мне с тем, что мне не хватает?

1 Ответ

0 голосов
/ 05 марта 2020

Вы должны использовать само внутреннее соединение

select A.id , B.id from Tab1  A INNER JOIN 
(select * from Tab1 where agg_txt is NOT NULL ) B on B.agg_txt like '%'+ rtrim(A.id) + '%'  ;

Демо

...