我的表结构如下所示。
Products { product_name, brand, model}
所有都是varchar字段(有更多字段,但它们与我的问题无关。此表中有近5000000。
现在我需要做的是,我想浏览所有产品并检查product_name是否包含任何其他产品品牌和型号(不是单词的一部分而是完整的单词,因此产品名称应该包含模型作为一个单词和品牌作为一个单词),如果存储的话,这些是相同的产品。
我已经研究了与共同相关的子查询方法的全文索引,但后来才知道CONTAINS函数不接受列名作为第二个单词,如果以某种方式实现它的速度,我也不会这样做。
对我这样做的任何建议对我都非常有帮助。
非常感谢您的帮助。
答案 0 :(得分:1)
like
和exists
无法实现这一点吗?
select * from Products p
where exists(select * from Products
where p.product_name != product_name
and (' ' + p.product_name + ' ' like '% ' + brand + ' % ' + model + ' %'
or ' ' + p.product_name + ' ' like '% ' + model + ' % ' + brand + ' %'))