代码之家  ›  专栏  ›  技术社区  ›  trubex

如何在mysql中将列拆分成多行(以管道作为分隔符)?

  •  1
  • trubex  · 技术社区  · 7 年前

    我有一张这样的桌子:

    col_raw

       |    COL1  |COL2|    COL3  |  COL4  |
       -------------------------------------
       |0123456789|Male|Basketball|Aquarius|
       -------------------------------------
    

    我想将table1转换为table2,它由这个列标题名组成

    表2:

     Column Names: Phone Number | Gender | Hoby | Zodiak
    

    如果在mysql中有过这样的查询,请告诉我。谢谢您!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sudipta Mondal    7 年前

    如果您总是有4列,可以使用下面的

    select substring_index(column_name,'|',1) firstcol,
    substring_index(substring_index(column_name,'|',2),'|',-1) secondcol,
    substring_index(substring_index(column_name,'|',3),'|',-1) thirdcol,
    substring_index(substring_index(column_name,'|',4),'|',-1) fourthcol
    from table_name;
    

    为了理解上面的内容,您可以尝试运行下面的查询,您将看到如何在上面的查询中多次使用子字符串索引来获取所需的详细信息

    select substring_index(column_name,'|',1),
    substring_index(column_name,'|',2),
    substring_index(column_name,'|',3),
    substring_index(column_name,'|',4)
    from table_name;