JOIN sql上的concat 2列值

时间:2017-08-02 08:13:54

标签: sql sql-server tsql join

Table One


ID  Code    Amount
1   2       100
2   2       200


Table Two

ID  Key     Description
1   12      Bag
2   22      Cap

我想加入选择两个表来连接一个表的2列。在表格中说我想在t1.id + t1时加入它们。 code = t2.key。在图形方面,我想得到22 = 2212 = 12第一面的22 or 21 t1.id+t1.code

查询:

Select * 
from table1 AS t1 INNER JOIN table2 AS t2 ON (t1.id +""+ t1.code)= t2.key

错误:

  

Msg 1038,Level 15,State 4,Line 1   对象或列名称缺失或为空。对于SELECT INTO语句,请验证每列是否具有名称。对于其他语句,请查找空别名。不允许使用定义为“”或[]的别名。将别名更改为有效名称。

1 个答案:

答案 0 :(得分:5)

您应该将''用于空字符串:

Select * 
from table1 AS t1 
INNER JOIN table2 AS t2 ON (t1.id +''+ t1.code)= t2.[key]
-- key is reserved keyword so you need to quote it

CONCAT

Select * 
from table1 AS t1 
INNER JOIN table2 AS t2 ON CONCAT(t1.id, t1.code)= t2.[key];

<强> Rextester Demo

如果列为INT,您还需要将其投射为:CAST(t1.id AS VARCHAR(10))

请注意,您的加入效果不佳。