现在,我的表data
中有一列称为标签的列。它包含逗号分隔的标签,类型为varchar(254)
。
我还有另一个表lookup
,其中将这些标签索引为其正确的代码。
我在data
表中还有一列名为code
的列,我想用1个基于任何逗号分隔标签的代码来填充。
我该怎么做
lookup
表中是否找到了任何标签,如果有,请更新我的“代码”字段以反映找到的内容感谢您的帮助,对不起,这是一个复杂的问题。
我首先使用子字符串并查找单个标签,但一次只能执行1,却遇到了获取中间值或最终值的麻烦。
答案 0 :(得分:2)
一种方法是使用outer apply
的{{1}}:
like
注意:如果select d.*, l.code
from data d outer apply
(select top (1) l.*
from lookup l
where ',' + d.labels + ',' like '%,' + l.label + ',%'
) l;
不是字符串,则可能需要强制转换。
然后,可以通过创建每个标签只有一行的联结表来着手修复数据模型。在单个列中存储多个值不是存储事物的正确方法。