【问题标题】:How to display 3 column value in a single rows [duplicate]如何在单行中显示3列值[重复]
【发布时间】:2020-12-07 06:59:37
【问题描述】:

我想在 SQL 中将 3 列值显示为单行。

输入:

Branch |Phone1|Phone2|Phone3
abc    |12345 |456321|456321

输出:

Branch|Phone
abc   |12345,456321,45321

请帮忙

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/questions/25207771/…
  • 试试SELECT Branch, Phone1 + ',' + Phone2 +',' + Phone3 AS Phone FROM ....
  • 请试一试,只有在卡住时才发布问题。我们不是来为您编写代码的。
  • 我尝试使用变量并完成此操作。但我必须创建 3 个变量,它不好,这就是为什么我需要一些替代解决方案。所以我只是发布我的问题。

标签: sql-server


【解决方案1】:

我建议您利用 CONCAT 函数和 CONCAT_WS 函数,因为它们处理 NULL 值:如果存在 NULL 值,则将其替换为空字符串。

可以使用不同的方法进行连接

SELECT Branch, concat_ws(',',phone1, phone2, phone3) as phone
FROM
(
VALUES
('abc',12345,456321,456321)
) AS T(Branch,Phone1,Phone2,Phone3)
SELECT Branch, concat(phone1,',', phone2,',', phone3) as phone
FROM
(
VALUES
('abc',12345,456321,456321)
) AS T(Branch,Phone1,Phone2,Phone3)
  • 使用串联运算符+ 进行正则串联
SELECT Branch, cast(phone1 as varchar(10)) + ',' +  cast(phone2 as varchar(10)) + ',' +  cast(phone3 as varchar(10)) as phone
FROM
(
VALUES
('abc',12345,456321,456321)
) AS T(Branch,Phone1,Phone2,Phone3)
  • 如果有可能出现 NULL,请使用 ISNULL 子句来处理带有空字符串的 NULL。
SELECT Branch, cast(ISNULL(phone1,'') as varchar(10)) + ',' +  cast(phone2 as varchar(10)) + ',' +  cast(phone3 as varchar(10)) as phone
FROM
(
VALUES
('abc',null,456321,456321)
) AS T(Branch,Phone1,Phone2,Phone3)

我强烈推荐CONCAT_WS 选项,因为它使代码更简单并且可以轻松处理 NULL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多