2010-08-26 92 views
4

我有行像這樣的表:MySQL的:拆柱分爲兩個

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

我想修改該到:

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

是否有一個簡單的方法來做到這一點?

+1

您需要確保您的列首先有唯一的名稱。 – Martijn 2010-08-26 14:15:27

+0

正在做我認爲比如果像「US。%」這樣的查詢離開它的更好方法? – NinjaCat 2010-08-26 15:17:25

回答

11
  1. 使用alter table - 添加新列。
  2. 更新號碼欄+ Country.Number:使用substring_index

查詢:

UPDATE TABLE SET Number = SUBSTRING_INDEX('Country.Number', '.', -1), 
Country.Number = SUBSTRING_INDEX('Country.Number', '.', 1); 
  • alter table變化字段Country.Number
  • 的名稱
    1

    首先將數字列添加到表中。

    然後如果Country.Number中的所有條目都有「。」如果使用「US」和「#」分隔符,您可以輕鬆地從表中獲取所有行並遍歷每行。

    在每一行上,您都可以使用explode()函數(其他存在的)將Country字段分成兩部分,「US」和「#」,然後執行插入操作。

    -1

    更改表格shema後,可以使用此查詢填充數據:

    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) 
    
    +0

    MySQL中沒有爆炸函數嗎? – CodeBrauer 2017-08-03 09:09:17