Sql 匹配不完全匹配的字段?

Sql 匹配不完全匹配的字段?,sql,excel,ms-access,Sql,Excel,Ms Access,我一直在尝试为客户设置简单的查询,以使他们的产品表与批发商的价格目录相匹配。我遇到的唯一问题是,该公司仅使用产品的SKU对其产品进行了格式化,而pricer将其列为MFC-SKU。我已经想出了一些方法来解决这个问题,但我总的来说很难,因为我是一个新手 有没有人知道一种方法,我可以匹配两个具有相同数字的字段,但在其他情况下不匹配 例如,我想将Frigidaire.f1中的“3206165”与WeeklyPriceList.f1中的“WCI 3206165”进行匹配。它们没有相同的密钥ID,但它们在

我一直在尝试为客户设置简单的查询,以使他们的产品表与批发商的价格目录相匹配。我遇到的唯一问题是,该公司仅使用产品的SKU对其产品进行了格式化,而pricer将其列为MFC-SKU。我已经想出了一些方法来解决这个问题,但我总的来说很难,因为我是一个新手

有没有人知道一种方法,我可以匹配两个具有相同数字的字段,但在其他情况下不匹配

例如,我想将Frigidaire.f1中的“3206165”与WeeklyPriceList.f1中的“WCI 3206165”进行匹配。它们没有相同的密钥ID,但它们在f2中有匹配的信息,但不足以让我根据这些信息进行查询


任何信息都会有很大帮助,因为我完全被困在这里了。非常感谢你

ON子句对访问有很大的限制。除等式外,不能在此处使用任何表达式

例如,在SQL Server中,您可以编写:

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire INNER JOIN WeeklyPriceList 
ON Frigidaire.f1 = 'WCI ' + WeeklyPriceList.f1
使用Access时,您需要使用逗号分隔的表列表,其中包含WHERE子句中的条件:

更新:正如其他人所建议的,您可以使用LIKE运算符、Mid函数或正确的函数来获得结果:

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire, WeeklyPriceList 
WHERE Frigidaire.f1 LIKE '%' & WeeklyPriceList.f1

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire, WeeklyPriceList 
WHERE Mid(Frigidaire.f1, 4) = WeeklyPriceList.f1

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire, WeeklyPriceList 
WHERE Right(Frigidaire.f1, Len(WeeklyPriceList.f1)) = WeeklyPriceList.f1
LIKE和通配符%也可以使用。它可能没有另一个答案那么快,但它会考虑所有的可能性

    SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
    FROM Frigidaire, WeeklyPriceList 
    WHERE Frigidaire.f1 LIKE "%WeeklyPriceList.f1"

由于您是初次访问,最简单的方法是使用额外的WCI信息获取表,并创建一个精确复制该表的查询,但从该字段中修剪WCI信息。当需要进行任何匹配时,只需引用查询而不是表。一旦您对查询、dlookups或SQL更加熟悉,您就可以使用上述建议来引用数据。

我可能会将Mid函数与InStr函数结合使用,以隔离所需的数字,从而允许您将这两个字段连接起来。我认为使用此方法会遇到的唯一问题是数据类型不匹配,但使用Val函数将其转换为数字很容易解决。希望有帮助

您可以使用Like创建连接,其中:


一种高级方法是使用正则表达式模式匹配。但对于简单的解决方案,可以使用通配符。我会检查文档,但可能是%WHERE语句应该颠倒:WHERE WeeklyPriceList.f1='WCI'&Frigidaire.f1,因为额外的文本在WeeklyPriceList字段中。这非常有效,谢谢!正如geeFlo所说,WHERE语句颠倒了。我本想添加更多内容,但没想到按enter键会发送评论。。。那么,有没有一种方法可以增加多种可能性?例如,添加“WCI”或“SKT”&Frigidaire.F1。听上去你刚才说的不可能,但在SQL Server中这可能是可能的?检查下面@Gustav的答案,他在那里使用了类似的方法。那应该对你有用。哪里有每周的价目表!f1就像“*”和Frigidaire!f1&'注意*前面的单引号和结尾引号之间的单引号。我无法使此公式起作用。可能我遗漏了什么吗?实际上与上面的注释相同。需要交换的位置中的字段选择Frigidaire.Description,Frigidaire.f1,WeeklyPriceList。Frigidaire的价格,WeeklyPriceList where WeeklyPriceList.f1类似于%Frigidaire.f1
    SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
    FROM Frigidaire, WeeklyPriceList 
    WHERE Frigidaire.f1 LIKE "%WeeklyPriceList.f1"
SELECT 
    Frigidaire.Description, 
    Frigidaire.f1, 
    WeeklyPriceList.Price
FROM 
    Frigidaire, 
    WeeklyPriceList 
WHERE 
    Frigidaire.f1 LIKE "*" & [WeeklyPriceList].[f1] & "*"