【问题标题】: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 |

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

【问题讨论】:

    标签: mysql select


    【解决方案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,...
      

      【讨论】:

      • 这没有回答原来的问题。
      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2019-09-10
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      相关资源
      最近更新 更多