SQL Server:查找1行的多个索引(并查找那些索引)

时间:2018-06-20 20:51:52

标签: sql sql-server indexing lookup

现在,我的表data中有一列称为标签的列。它包含逗号分隔的标签,类型为varchar(254)

我还有另一个表lookup,其中将这些标签索引为其正确的代码。

我在data表中还有一列名为code的列,我想用1个基于任何逗号分隔标签的代码来填充。

我该怎么做

  1. 动态分离标签
  2. 检查以查看在lookup表中是否找到了任何标签,如果有,请更新我的“代码”字段以反映找到的内容

感谢您的帮助,对不起,这是一个复杂的问题。

我首先使用子字符串并查找单个标签,但一次只能执行1,却遇到了获取中间值或最终值的麻烦。

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; 不是字符串,则可能需要强制转换。

然后,可以通过创建每个标签只有一行的联结表来着手修复数据模型。在单个列中存储多个值不是存储事物的正确方法。