将主要产品下的类似产品分组的SQL代码

时间:2015-02-04 21:44:28

标签: mysql sql-server

所以我有一个含有大量化学物质的数据库。 我这里有主要的化学物质

http://postimg.org/image/p1xviagk7/

这里我所有其他化学物质的名称略有不同但它们是相同的。 http://postimg.org/image/dyh76t08h/

有很多化学物质含有NULL ingredient_id

例如: Camelia是主要的化学名称。理想情况下,我想在sql中编写一个代码,如果看到

有机CAMELIA SINENSIS(白茶)叶提取物

CAMELIA SINENSIS(白茶)叶提取物

将它们归入主要成分Camelia。

它现在的工作方式是,如果我看到具有NULL ingredient_id的物质,我只是在主化学名称文件夹或其他物质中搜索它的相似名称然后如果我找到它我从发现中复制id物质并粘贴到NULL ingredient_id中。 我有3万个NULL ingredient_id物质。

是否有一些代码可以将具有NULL ingredient_id的物质与具有相似名称的其他物质进行匹配,然后它会以某种方式复制其成分ID。或者它可以在主化学名称文件夹下搜索相似的名称,如果找到则会获取此ID。

我做了一些研究,我发现使用Jaccard索引可以解决这个问题。

但我是第一年合作社的第一年学生,不知道如何实施它。 如果您需要更多信息或希望我澄清一些事情,请告诉我。

只是更新

所以现在我只需要一些代码来查找具有相似名称的所有类似产品并使其ID相等。是否可以这样做?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用通配符加入:

create table #substances (s_name nvarchar(100));
create table #main_ingredients (mi_name nvarchar(100));
insert into #substances (s_name) values ('ORGANIC CAMELIA SINENSIS (WHITE TEA) LEAF EXTRACT'),('CAMELIA SINENSIS (WHITE TEA) LEAF EXTRACT'),('HIGH FRUCTOSE CORN SYRUP'),('WHEATFLOUR');
insert into #main_ingredients (mi_name) values ('Camelia'),('Fructose'), ('Wheat');

select  mi_name,
        s_name
from #substances as S
join #main_ingredients as M on
S.s_name like '%'+mi_name+'%';

drop table #substances;
drop table #main_ingredients;