在视图中使用带有 SQL 函数的连接

Using a join with SQL function in view

这对你们中的一些人来说可能是一个非常基础的问题,但是请新手耐心学习SQL服务器。

我需要创建一个视图,我试图在其中连接来自两个 table 的多个列。唯一的问题是,其中一列的值包含额外的字符,需要使用 RIGHT 函数或 SUBSTRING 将其删除,以便它能够匹配另一列 table 中的相应列。

这是我写的,但我需要帮助解决我在 SerialNo 列上做错了什么:

SELECT a.ID, 
       a.SerialNo, 
       a.Price, 
       a.ItemName, 
       b.ID, b.SNumber, 
       b.ItemDesc
FROM Table1 a LEFT JOIN
Table2 b ON a.ID = b.ID AND
            a.Price = b.Price AND
            a.SerialNo = (SELECT RIGHT(b.SNumber, 6) AS b.SNumber from Table2)

不需要子查询来处理第二个连接条件,直接调用RIGHT即可:

SELECT a.ID, a.SerialNo, a.Price, a.ItemName, b.ID, b.SNumber, b.ItemDesc
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID AND
   a.Price = b.Price AND
   a.SerialNo = RIGHT(b.SNumber, 6);

作为旁注,如果您认为您需要经常执行此查询,那么您可能需要考虑在 Table2 中为此连接添加一个新列,即 [ 的前六个字符=13=]。这样做的原因是,当条件涉及函数时,连接的成本可能非常高。而且,这种情况下一般也不能使用索引。