【发布时间】: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