匹配不完全匹配的字段?

时间:2016-10-24 05:03:36

标签: sql excel ms-access

我一直在尝试为客户设置简单查询,以使其产品表与批发商的价格目录相匹配。我遇到的唯一问题是公司仅使用产品的SKU格式化他们的项目,而价格则将它们列为MFC-SKU。我想出了几种方法来解决这个问题,但由于我是Access的新手,我总体上很难过。

有没有人知道我可以匹配两个具有相同数字的字段,但不相匹配?

例如,我想将Frigidaire.f1中的“3206165”与WeeklyPriceList.f1中的“WCI 3206165”进行匹配。它们没有相同的密钥ID,但它们确实在f2中具有匹配的信息(但不足以让我将查询作为基础)。

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

5 个答案:

答案 0 :(得分:1)

使用ON子句限制访问权限。除了相等之外,你不能使用任何表达式。

EG。在SQL Server中你会写:

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire INNER JOIN WeeklyPriceList 
ON Frigidaire.f1 = 'WCI ' + WeeklyPriceList.f1

使用Access,您需要使用逗号分隔的表列表以及WHERE子句中的条件:

SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire, WeeklyPriceList 
WHERE 'WCI ' & Frigidaire.f1 = WeeklyPriceList.f1
   OR 'SKR ' & Frigidaire.f1 = WeeklyPriceList.f1

更新:正如其他人建议的那样,您可以使用LIKE运算符,Mid()函数或Right()函数来获取结果:

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

答案 1 :(得分:0)

LIKE和通配符%也可以使用。它可能没有其他答案那么快,但它会解释所有可能性。

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

答案 2 :(得分:0)

由于您是Access的新手,最简单的方法是使用额外的“WCI”信息获取您的表,并创建一个完全复制该表的查询,但修剪该字段中的“WCI”信息。当您需要进行任何匹配时,只需引用Query而不是Table。一旦您对查询,dlookup或SQL更加熟悉,那么您可以使用上述建议来引用数据。

答案 3 :(得分:0)

我可能会将Mid函数与InStr函数结合使用来隔离您需要的数字,这样您就可以加入这两个字段。我认为您使用此方法遇到的唯一问题是数据类型不匹配,但使用Val函数将其转换为数字很容易修复。希望有所帮助!

答案 4 :(得分:0)

您可以使用使用 WHERE 创建联接:

SELECT 
    Frigidaire.Description, 
    Frigidaire.f1, 
    WeeklyPriceList.Price
FROM 
    Frigidaire, 
    WeeklyPriceList 
WHERE 
    Frigidaire.f1 LIKE "*" & [WeeklyPriceList].[f1] & "*"