【问题标题】:How to check if one column value exists in another column value using like operator如何使用like运算符检查一个列值是否存在于另一列值中
【发布时间】:2020-03-05 14:38:59
【问题描述】:

我正在尝试在另一列中查找一列的模式并尝试提取数字。

我的桌子:

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 个 ID 存在于 aggregatedID 中,并带有特殊字符连接。我必须获取 ID,即 ID_666 并更新前 4 个 ID,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@@@

我尝试使用子字符串 .i.e.在“|”之后提取一个数字而在'@'之前+'@'之前的第一个数字

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

但这会返回第一个'|'之后的整个字符串。

我尝试使用like 将aggregatedID 与ID 匹配,但没有获取任何数据。

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

任何人都可以帮我解决我所缺少的吗?

【问题讨论】:

    标签: sql-server-2012


    【解决方案1】:

    你必须使用自内连接

    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) + '%'  ;
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 2022-08-26
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多