如何将多列合并为一列并使用自定义字符串格式化?

Posted

技术标签:

【中文标题】如何将多列合并为一列并使用自定义字符串格式化?【英文标题】:How to combine multiple columns as one and format with custom strings? 【发布时间】:2011-04-15 00:53:15 【问题描述】:
SELECT id, <X> AS name FROM `table`

基本上&lt;X&gt;是的组合 姓氏 + ', ' + 名字

例子是

   id | name        |
   2  | Smith, Bob  |
   3  | Jones, Susy |

这只是一个例子,我并不想这么简单的组合名字。

【问题讨论】:

【参考方案1】:

CONCAT() 函数呢?

SELECT id, CONCAT(lastname, ', ', firstname) AS name FROM `table`;

如果要连接多个字段,还可以考虑CONCAT_WS() 函数,其中第一个参数是其余参数的分隔符,添加在要连接的字符串之间:

SELECT id, 
       CONCAT_WS(',', field_1, field_2, field_3, field_4) list
FROM   `table`;

【讨论】:

感谢 Concat_WS 这就是我想要的。但是这样做的成本是多少,这对 mysql 有影响吗?还是没有什么值得担心的问题?【参考方案2】:

使用concat 喜欢:

SELECT id, CONCAT(lastname, ' , ', firstname) AS name FROM `table`;

【讨论】:

【参考方案3】:
SELECT 

CONCAT('https://example.com/estimation/create?pId=',task_p_id,'&estId=',task_est_id) as live_url,

CONCAT('http://stage.example.com/estimation/create?pId=',task_p_id,'&estId=',task_est_id) as stage_url 

FROM `ls_task` LEFT JOIN `ls_estimation` ON est_id=task_est_id LEFT JOIN `ls_project` ON p_id=task_p_id limit 10

【讨论】:

虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。【参考方案4】:

你可以使用GROUP_CONCAT():

获取以逗号分隔的表的所有列名的示例:

SELECT GROUP_CONCAT(c.`COLUMN_NAME`) FROM information_schema.`COLUMNS` c
WHERE c.`TABLE_SCHEMA` = "DB_NAME" AND c.`TABLE_NAME`="TABLE_NAME"

输出:

column_name_1,column_name_2,column_name_3,column_name_4,...

【讨论】:

这没有回答原来的问题。

以上是关于如何将多列合并为一列并使用自定义字符串格式化?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL两列合并为一列,并且可以自定义添加一些字符

Dask - 将多列合并为一列

【Excel】多列数据合并为一列

r 将多列中的数据合并为一列

Excel - 将多列合并为一列

sql数据库中,如何将一个表中的多列数字合并为一列