在SQL或.NET中比较复杂字符串的最佳方法

在SQL或.NET中比较复杂字符串的最佳方法,.net,sql-server,string,.net,Sql Server,String,我觉得自己有点像个新手,但无论如何: 我有大量的库存项目,3000-5000个,其名称复杂,根据16年期间输入项目的人员而定,名称示例如下: "Food, Dog, Pal Meaty Bites chunks 8kg bag" 另一个相关项目名为: "DOG FOOD: Meaty Bites (Pal) 22kg bag" 问题是,我有许多供应商的物品清单,有更新的价格,我需要与我们现有的库存清单相匹配。第一次获得列表时,我想尝试进行“最接近匹配”搜索,并向用户提供当前库存商品名称的列表

我觉得自己有点像个新手,但无论如何:

我有大量的库存项目,3000-5000个,其名称复杂,根据16年期间输入项目的人员而定,名称示例如下:

"Food, Dog, Pal Meaty Bites chunks 8kg bag"
另一个相关项目名为:

"DOG FOOD: Meaty Bites (Pal) 22kg bag"
问题是,我有许多供应商的物品清单,有更新的价格,我需要与我们现有的库存清单相匹配。第一次获得列表时,我想尝试进行“最接近匹配”搜索,并向用户提供当前库存商品名称的列表,该列表可能与供应商库存商品名称匹配。然后用户将选择正确的SKU,应用程序将导入供应商项目并链接到我们的库存表PK

供应商的名称也会有所不同。例如:

"Pal Meaty Bites Chunks 8kg"
我可以在SQL或.NET中进行匹配,这是您推荐的。我想给用户提供尽可能少的项目基于最大数量的关键字匹配。到目前为止,我的想法是:

在.Net中:分成一个数组,搜索每个项目的每个关键字(慢) 在SQL中:使用全文索引,并使用“或”返回列表将名称拆分为关键字,并将其排序为截断

这一定是一种常见的情况,我只是不确定最好的方法。谢谢你的意见

编辑:添加了一些上下文:
我们有一个SKU表,它有大约20个字段,包括StockKeepingUnitID,它是唯一的PK(int标识)。供应商产品被拉入一个名为StockOrderUnit的表中,该表的FK为SupplierID和StockKeepingUnitID,还有一个名为SupplierCode(varchar)的字段,其中包含该库存项目的供应商唯一代码。问题是,许多供应商向我们发送了价目表,用户需要将供应商项目(目前未知)与数据库中的现有SKU进行匹配。一旦他们选择了一个,记录就被连接起来。

一定要把它带回客户机代码中,而不是数据库中。正如您所说,这将允许您创建匹配分数,并允许用户选择/确认您的自动匹配

我会把它分解成一个数组,转换成小写,然后按字母顺序排序。也许可以尝试将包含数字的项移动到数组的前面。将其全部拉回到一个字符串中,以帮助用户以一点一致性识别匹配项


我不愿意在SQL脚本中自动执行此操作,也不需要用户监督。也许用户可以得到一个分数,只需对低于某个阈值的用户进行评判。

用户可以使用SQL关键字进行这样的搜索

select fld1, fld2 from ProductTable where fld1 LIKE '%Meaty Bites%';
请原谅,如果您已经有一个,但如果您没有SKU(库存单位) 系统为人类的爱创造了一个。至少创建一个自动递增(标识)的唯一主键,并将其应用于所有记录。然后使用它进行查找等


使用“like”,会有更少的记录出现,您无需编写大量代码即可完成工作。

您可以采用这两种方法。
拆分并在SQL中进行一些基本匹配。
然后在.Net中对结果进行评分

SQL中的基本匹配可以非常简单,只需列出与许多单词匹配的所有内容即可


那么你在.Net中的得分就是真正的“魔术”发生的地方。

谢谢。为了这篇文章,我只想简短一点。我们有一个SKU表,它有大约20个字段,包括StockKeepingUnitID,这是唯一的PK int标识。供应商产品被拉入一个名为StockOrderUnit的表中,该表的FK为SupplierID和StockKeepingUnitID,还有一个名为SupplierCode(varchar)的字段,其中包含该库存项目的供应商唯一代码。问题是,许多供应商向我们发送了价目表,由用户将供应商项目(目前未知)与数据库中的现有SKU进行匹配。@Molloch-Gotcha'。继续打好仗。:-)请记住,“like”将返回一个结果集,而不仅仅是一条记录。谢谢。这就是我的结论。它不会完全自动化,只列出5-10个最好的匹配项供用户选择。如果他们必须搜索,他们不会这样做!我之所以回想起SQL是为了利用全文索引,但无论如何我想还是要清理.NEt中的结果。谢谢你的回答。什么版本的SQL Server?如果使用SQL 2008,则可以很容易地查询全文索引词。