SQL 右连接功能条件

SQL right join with functional condition

我有这样的加入:

             "SELECT ADB.column1, BDB.column2 FROM ADB RIGHT JOIN BDB ON  
        (SELECT SUBSTRING( ADB.column1, LEN(ADB.column1) - 
     CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
 LEN(ADB.column1)  ) FROM BDB) = BDB.column2", sqlCon);

当我 运行 此代码时出现错误

System.Data.SqlClient.SqlException: 'Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= ,

, >= or when the subquery is used as an expression.'

如何强制子查询每行只获取 1 个数据?

我想你的查询会像下面这样

SELECT ADB.column1,
         BDB.column2 FROM
        ADB RIGHT JOIN BDB ON  
            ( SUBSTRING( ADB.column1, LEN(ADB.column1) - 
         CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
     LEN(ADB.column1) ) 
       ) = BDB.column2

您正在加入 ADB 和 BDB,但在加入条件下使用了来自 BDB 的 select,这没有任何意义

看来您确实把自己弄糊涂了...您不需要子选择 FROM BDB,因为您拥有所有这些 ADB.column1 转换。

SELECT ADB.column1, BDB.column2 
FROM ADB 
RIGHT JOIN BDB 
ON  SUBSTRING(ADB.column1, LEN(ADB.column1) - 
       CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
       LEN(ADB.column1)
    ) = BDB.column2