将列中的字符串拆分为同一表中的三列,并将其插入新表中

时间:2017-11-14 09:55:34

标签: mysql sql

您好我是初学者..这是我的问题

我有一张桌子" tspade"有两列,如下所示:

No  | Unixdatetime                                      |

1   | 1234567890 -1 #SUP: 2                             |

2   | 2345678901 -1 #SUP: 2                             |

3   | 3456789012 -1 #SUP: 3                             |

4   | 4567890123 -1 5678901234 -1 #SUP: 2               |

5   | 6789012345 -1 7890123456 -1 8901234567 -1 #SUP: 2 |

我希望将该表格转换为:

No  | Unixdatetime1 | Unixdatetime2 | Unixdatetime3 |

1   | 1234567890    | 0             | 0             |

2   | 2345678901    | 0             | 0             |

3   | 3456789012    | 0             | 0             |

4   | 4567890123    | 5678901234    | 0             |

5   | 6789012345    | 7890123456    | 8901234567    |

并将其保存到表try

我使用了这个查询:

Insert Into try (No,Unixdatetime1,Unixdatetime2,Unixdatetime3)
SELECT `No`, `Unixdatetime`,
    SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 1 ) AS Unixdatetime1,
    SUBSTRING_INDEX(SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 2 ),' -1 ',-1) AS Unixdatetime2,
    SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', -1 ) AS Unixdatetime3
FROM tspade

但它无法奏效...... 有什么建议或帮助吗? 提前致谢

4 个答案:

答案 0 :(得分:0)

您尝试使用SELECT插入 4 列,选择 5 列:

Insert Into try (No, Unixdatetime1, Unixdatetime2,Unixdatetime3)
--               1       2             3            4
SELECT 
   `No`, -- <--------1
   `Unixdatetime`, -- <--------2
    SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 1 ) 
    AS Unixdatetime1, -- <--------3
    SUBSTRING_INDEX(SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 2 ),' -1 ',-1) 
    AS Unixdatetime2,-- <--------4
    SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', -1 ) 
    AS Unixdatetime3 -- <--------5
FROM tspade

这是不可能的

答案 1 :(得分:0)

值为4列,插入值为5

(并且你不应该在select中使用别名)在insert中选择值cluase中列的数量和数据类型,并在select cluase中必须匹配

例如:

  Insert Into try (No,Unixdatetime1,Unixdatetime2,Unixdatetime3)
  SELECT `No`
      ,  SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 1 ) 
      , SUBSTRING_INDEX(SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', 2 ),' -1 ',-1) 
      , SUBSTRING_INDEX( `Unixdatetime` , ' -1 ', -1 ) 
  FROM tspade

答案 2 :(得分:0)

第一步是选择值。如果您不完全了解自己在做什么,请忘掉 if(data[count].componentid === undefined || data[count].componentid === null){ //Use your modal code } else{ //preparedHTML code }

SELECT INTO

将省略号替换为您在结果表中根据需要选择子串所需的代码(观察结果!)。

如果您在Select No, SUBSTRING(...) as Date1, [...] from tspade 结果中获得了所需的结果,请将其插入下一个表格。

Select

答案 3 :(得分:0)

问题在于没有。 try表中的列和select语句不匹配。

SELECT No, Unixdatetime ,SUBSTRING_INDEX(Unixdatetime,&#39; -1&#39;,1)AS Unixdatetime1,SUBSTRING_INDEX(SUBSTRING_INDEX(Unixdatetime,&#39; -1&#39) ;,2),&#39; -1&#39;, - 1)AS Unixdatetime2,SUBSTRING_INDEX(Unixdatetime,&#39; -1&#39;, - 1)AS Unixdatetime3 FROM tspade

从select语句中删除突出显示的列,然后尝试。