【问题标题】:concat 2 column values on JOIN sql在 JOIN sql 上连接 2 列值
【发布时间】:2018-01-09 08:15:44
【问题描述】:
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 时加入它们。代码 = t2.key。在图形中,我想得到22 = 2212 = 12,其中第一侧的22 or 21t1.id+t1.code

查询:

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

错误:

消息 1038,第 15 级,状态 4,第 1 行 缺少对象或列名称或为空。对于 SELECT INTO 语句,验证每一列都有一个名称。对于其他语句,请查找空别名。不允许使用定义为 "" 或 [] 的别名。将别名更改为有效名称。

【问题讨论】:

    标签: sql sql-server tsql join


    【解决方案1】:

    你应该使用''作为空字符串:

    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))

    请注意,您的加入将表现不佳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 2015-03-26
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多