MySQL:将列拆分为两个

时间:2010-08-26 14:13:45

标签: sql mysql

我有一个像这样的行的表:

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

我想将其修改为:

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

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:11)

  1. 使用alter table - 添加新列。
  2. 更新号码栏+ Country.Number:使用substring_index
  3. 查询:

    UPDATE TABLE SET Number = SUBSTRING_INDEX('Country.Number', '.', -1),
    Country.Number = SUBSTRING_INDEX('Country.Number', '.', 1);
    
    1. alter table更改Country.Number的字段名称

答案 1 :(得分:1)

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

然后,如果Country.Number中的所有条目都有“。”将“US”和“#”分开,您可以轻松地从表中获取所有行并迭代每一行。

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

答案 2 :(得分:-1)

更改表格后,您可以使用此查询填充数据:

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)