SQL 服务器左加入 LIKE 意外结果

SQL Server Left Join LIKE unexpected result

我的查询中有一个适用于大部分查询的 LEFT JOIN。我遇到了一个无法处理的记录,无法弄清楚原因。

我在做:

SELECT t1.StrSerialNumber, t2.serialNumber

FROM table1 AS T1 

LEFT JOIN
table2 AS t2 ON t1.StrSerialNumber LIKE '%' + t2.serialNumber + '%'

...t1.StrSerialNumber 两端都可以有一个额外的字符。否则,这两列应该匹配。

除 1 行外,这按预期(或希望)工作,这让我觉得可能还有更多。

当我运行:

select * from t2 where serialNumber like '%' + 'number from t1.StrSerialNumber' + '%'

...作为一个单独的查询,它确实 return 我正在寻找的东西!当直接查询 t2 的值 LIKE 时,我可以看到它就在那里。它只是不能作为 JOIN 的一部分工作。

t1 中的所有列不为空,因此不会缺少其他信息。

我什至更新了 t2.serialNumber,不是为了匹配 t1.StrSerialNumber,而是为了确保字段中没有空格等

这个场景有什么“问题”吗??

谢谢!!

编辑

这是失败的示例。

底部的绿色框显示 JOIN 语句的预期结果,在查询本身的绿色框中。

查询结果中的红色框显示我期望 'like' 匹配的行。

工作区中的橙色框是 return我希望在第 42 行,googleSN 列中的序列号的查询。

黄线只是显示了我认为 serialNumber 应该在 JOIN 中的位置。

显然我不希望 'like' 匹配 invSN 中的所有“0”值。

我希望这是有道理的!

enter image description here

第二个查询没有return第一个的子集(滥用子集这个词)。 LEFT JOIN 查询希望 t1.SN 包含在 t2.SN 值中。第二个查询希望 t2.SN 包含在 t1.SN 值中。所以我猜你的要求可能有问题。

如果您描述的现象是您遇到的唯一问题,一个简单的OR就能解决问题:

SELECT t1.StrSerialNumber, t2.serialNumber

FROM table1 AS T1 

LEFT JOIN
table2 AS t2 ON t1.StrSerialNumber LIKE '%' + t2.serialNumber + '%'
    OR t2.serialNumber LIKE '%' + t1.StrSerialNumber + '%'