为什么我的LIKEfilter只匹配一个值?

我有这个Excel文件 ,这是给我意想不到的结果在一个SQL查询LIKE条件上join。

这是SQL语句:

 SELECT CO.MATERIALS, CO.SIZES, CO.TOOLS, IR.PN, IR.BODYJAW FROM `CROSSJOIN$` CO LEFT JOIN `INSERTS$` IR ON CO.TOOLS=IR.TOOL AND ((IR.MATERIAL Like '%'+CO.MATERIALS+'%')) AND ((IR.SIZE Like '%'+CO.SIZES+'%')) 

问题是, IR.MATERIAL的标准只能匹配一个值“333”。 我无法弄清楚。 下面是发生了什么情况的视觉解释(如果你不想下载文件):

在这里输入图像说明

另外两个filter工作得很好,分开或组合,所有的比赛都按预期返回。 只是这个MATERIAL领域给了我烧心。 如果我从SQL语句中删除了其他两个filter,我仍然只在材料“333”的logging上得到匹配,如果从左表中删除了这些材料,我根本没有得到任何匹配。

有谁知道什么会导致这种行为? 作为一个完整的检查,我试着在这些表上excel的查找,它匹配没有问题的材料,所以数据是正确的,并匹配。

有趣的是,只有333场比赛。

我想现在发生的事情是,Excel在材料列中看到的第一个值是333,所以推断列types是一个Integer数值,这会限制与其他整数值的匹配。

你可以通过欺骗其他材料代码来testing这个理论 – 在每个工作表中做一个“444”或者其他东西,看看是否匹配。 如果是这种情况,请确保列的数据types是你想要它们(所有文本,我假设)

或者,将IMEX=1添加到连接string可能会更容易 – 这将使Excel数据读取器将所有数据视为string。