如何将多列合并为一列并使用自定义字符串格式化?
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`
基本上<X>
是的组合
姓氏 + ', ' + 名字
例子是
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,...
【讨论】:
这没有回答原来的问题。以上是关于如何将多列合并为一列并使用自定义字符串格式化?的主要内容,如果未能解决你的问题,请参考以下文章