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

MySQL:将列一分为二

  •  4
  • NinjaCat  · 技术社区  · 15 年前

    | Country.Number | Country |
    | US.01          | USA     |
    | US.02          | USA     |
    

    我想将此修改为:

    | Country | Number | Country |
    | US      | 01     | USA     |
    | US      | 02     | USA     |
    

    有什么简单的方法吗?

    3 回复  |  直到 15 年前
        1
  •  11
  •   CodeBrauer    8 年前
    1. 使用 alter table -添加新列。
    2. 更新编号列+国家号码:使用 substring_index

    查询:

    UPDATE TABLE SET Number = SUBSTRING_INDEX('Country.Number', '.', -1),
    Country.Number = SUBSTRING_INDEX('Country.Number', '.', 1);
    
    1. 更改表格 更改字段名国家号码
        2
  •  1
  •   Chris    15 年前

    首先将数字列添加到表中。

    如果国家号码有一个“.”删除“US”和“#”,您可以很容易地从表中获取所有行并遍历每一行。

    在每一行上,您可以使用explode()函数(例如,其他函数)将Country字段拆分为两部分,“US”和“#”,然后执行插入操作。

        3
  •  -1
  •   Łukasz W.    15 年前

    INSERT INTO table_with_new_scheme (
       SELECT 
          explode('.', Country.Number)[0] as CountryAbbreviation,
          explode('.', Country.Number)[1] as Number,
          Country
       FROM table_with_old_schema)