SQL Server使用通配符加入列

时间:2014-03-21 22:11:12

标签: sql-server join

我需要找到一种方法来使用通配符的列名来连接两个表。这就是我的情景:

CREATE TABLE #table1
(
AuthCode varchar(10)

)

INSERT INTO #table1
VALUES ('52201')

SELECT * FROM #table1

JOIN bilact
ON #table1.AuthCode = bilact.byAuthCode

在bilact表中,auth代码为005221(字段为varchar),当我运行上述查询时,它不会返回任何结果。

我遇到的情况非常复杂,我不想解释为什么我必须这样做,因为这是唯一可行的方法。有没有办法在连接中添加带有列名的通配符?谢谢。

1 个答案:

答案 0 :(得分:0)

假设您希望一列成为另一列的子串:

SELECT * FROM #table1 JOIN bilact ON str(bilact.byAuthCode) LIKE '%' + #table1.AuthCode + '%'

或者,如果您需要匹配任一表中的子字符串

SELECT DISTINCT * FROM #table1 JOIN bilact ON str(bilact.byAuthCode) LIKE '%' + #table1.AuthCode + '%' OR #table1.byAuthCode LIKE '%' + str(bilact.AuthCode) + '%'

如果两列都是varchars或某种形式的字符串字段,则可以删除str()&#39。

否则,您需要确定2列共同需要的最长公共子字符串是什么,并且在连接中,迭代其中一列的每个可能子字符串,并执行与上面相同的操作,并使用另一列对照它。 / p>