我需要找到一种方法来使用通配符的列名来连接两个表。这就是我的情景:
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),当我运行上述查询时,它不会返回任何结果。
我遇到的情况非常复杂,我不想解释为什么我必须这样做,因为这是唯一可行的方法。有没有办法在连接中添加带有列名的通配符?谢谢。
答案 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>