SQL JOIN使用连接字段

时间:2011-01-14 15:42:21

标签: sql sql-server join concatenation

我有两个表,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,或者在哪个方向,它都失败了。我知道我在这里做了一些事,所以如果有人能指出我正确的方向,我会很感激。

3 个答案:

答案 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, "%")

如果适合你,请标出答案。