连接字符串和合并

Raf*_*aeu 2 t-sql sql-server concat string-concatenation

我有三个不同的表中选择行的查询: TableA,TableBTableC.

我的查询的一个字段必须是Name每个表中字段的串联,如下面的别名:

SELECT
    A.Name,
    B.Name,
    C.Name,
    CONCAT(A.Name, ' / ', B.Name, ' / ', C.Name) AS Full_name
FROM ... 
Run Code Online (Sandbox Code Playgroud)

查询使用a连接三个表LEFT OUTER JOIN.在某些情况下,如果其中一个表没有如下表中的条目,我会得到奇怪的结果:

--------------------------
|Table A |Table B|Table C|
--------------------------
|My      |Name   |       |
--------------------------
|My      |       |Is     |
--------------------------
|My      |Name   |Is     |
--------------------------
Run Code Online (Sandbox Code Playgroud)

跟踪/可见如下:

1) My / Name /
2) My / / Is
3) My / Name / Is
Run Code Online (Sandbox Code Playgroud)

我应该生成以下结果,但我不想使用CASE,所以我想知道我是否可以一起玩COALESCE,ISNULL和CONCAT

预期结果

1) My / Name
2) My / Is
3) My / Name / Is
Run Code Online (Sandbox Code Playgroud)

t-c*_*.dk 7

添加'/'和Name时,如果name为null,则为null.因此,您只需添加即可删除它们.

试试这个:

SELECT
    A.Name,
    B.Name,
    C.Name,
    CONCAT(A.Name, ' / '+ B.Name, ' / '+ C.Name) AS Full_name
FROM 
...
Run Code Online (Sandbox Code Playgroud)

小提琴中的样本.