【发布时间】:2017-06-25 09:31:08
【问题描述】:
我花了一整天的时间来寻找这个问题的答案,并且已经下定决心,在 3 种不同的搜索引擎变体之后这是不可能的。这是我的问题。我需要搜索打印机型号表。由于打印机型号没有标准化,型号的不同部分可能有不同的顺序。
HP OfficeJet Pro 8715
HP OfficeJet 8715 Pro
显然两者都是同一台打印机,但它们以两种方式出现在我们和供应商之间的共享数据库中。问题是,如果我搜索 HP OfficeJet Pro 8715,它也应该返回 HP OfficeJet 8715 Pro,但它不应该返回 HP OfficeJet Pro 8715dw > 例如。
总而言之,单词可以按任意顺序排列,但单词必须完全匹配。
我已经将搜索字符串解析为#temp 表,以便每一行都有一个单词,这就是我一直在比较查找结果的方式。
INSERT INTO #results
SELECT Make, Model
FROM tDevices
WHERE ( Make LIKE '%' + @MAKE + '%' ) AND ( Model LIKE '%' + @MODEL + '%' ) AND ( Model LIKE '%' + @MODEL2 + '%' )
其中每个模型变量都是模型中的另一个词。这很好用,但返回 HP OfficeJet Pro 8715 以及 HP OfficeJet Pro 8715dw
这可能吗?
谢谢
【问题讨论】:
-
您使用的是哪个 DBMS?
-
如果
Make总是在开头,只需明确检查Model中单词顺序的所有排列? -
你能回答这个问题吗?这最终成为我们的最佳解决方案。