为什么我的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。