我有两个表,Table1包含一个列,其中包含Table2中列的部分值,例如:
Table1.XName =“123456” Table2.ZName =“ABC-123456”
我需要创建一个匹配这些的JOIN,但是使用MS-SQL 2008我无法完成这项工作。以下是我的尝试样本:
SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON('ABC - '+ Table1.XName)= Table2.ZName
无论我使用什么类型的JOIN,或者在哪个方向,它都失败了。我知道我在这里做了一些事,所以如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:4)
这对我有用:
DECLARE @Table1 TABLE (XName VARCHAR(200))
DECLARE @Table2 TABLE (ZName VARCHAR(200))
INSERT
INTO @Table1
VALUES ('123456')
INSERT
INTO @Table2
VALUES ('ABC-123456')
SELECT *
FROM @Table1
LEFT JOIN
@Table2
ON ZName = 'ABC-' + XName
---
123456 ABC-123456
您能否发布表格的定义以及您收到的错误消息?
答案 1 :(得分:2)
随机猜测......
Table1.XName
数据类型是一个数字(不是基于字符的),因此您会收到转换错误
SELECT * FROM
Table1
LEFT OUTER JOIN
Table2 ON 'ABC-' + CAST(Table1.XName as varchar(30)) = Table2.ZName
答案 2 :(得分:1)
尝试使用
SELECT
*
FROM
Table1 LEFT OUTER JOIN Table2 ON
Table1.XName LIKE CONCAT("%", Table2.ZName, "%") OR
Table2.XName LIKE CONCAT("%", Table1.ZName, "%")
如果适合你,请标出答案。