MySql-拆分单元格并插入到另一个表中

标签 mysql select split substring

我有一个表test,其中有一列state_numbers

id  state_numbers
--  ------------
1  scr:1.0043;smb:0;rsm:0
2  scr:1.12;smb:0;rsm:0.3
3  scr:0.083;smb:0.65;rsm:0
4  scr:1.021;smb:0;rsm:0.2
5  scr:0.77;smb:0;rsm:0

我创建了一个名为状态的表,看起来像

 id     scr    smb    rsm   total
------ ------ ------ ------ ------
(null) (null) (null) (null) (null)

我需要一个查询来读取state_numbers中的值,根据关键字拆分表达式并将值放入状态表的相应列中。

我期待着:

 id     scr    smb    rsm   total
------ ------ ------ ------ ------
1      1.0043   0      0    (null)
2      1.12     0     0.3   (null)
3      0.083   0.65    0    (null)

然后我将能够在每列中添加数据并在总计列中进行更新。

最终输出:

 id     scr    smb    rsm   total
------ ------ ------ ------ ------
1      1.0043   0      0    1.0043
2      1.12     0     0.3   1.42
3      0.083   0.65    0    0.733

我该如何实现这一目标?帮助我拆分特定单元格并将数据插入到不同的字段中。

先谢谢了!!!

P.S:请为这个问题建议一个合适的标题

最佳答案

试试这个:

SELECT id, scr, smb, rsm, 
      (CAST(scr AS DECIMAL(18, 5)) + CAST(smb AS DECIMAL(18, 5)) + CAST(rsm AS DECIMAL(18, 5))) total
FROM (SELECT id, REPLACE(SUBSTRING_INDEX(state_numbers, ';', 1), 'scr:', '') scr, 
             REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(state_numbers, ';', -2), ';', 1), 'smb:', '') smb, 
             REPLACE(SUBSTRING_INDEX(state_numbers, ';', -1), 'rsm:', '') rsm
      FROM test
     ) AS A  

关于MySql-拆分单元格并插入到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759699/

相关文章:

mysql - 选择同一列中具有不同值且另一列中具有不同值的记录,无需子查询

html - 如何为表单选择做可访问的内联错误?

Python 在字段值中使用分隔符进行拆分

php - LIKE 语句在 PDO 中无法正常工作

mysql - 如何连接相互依赖的表

mysql - 如何将 Excel 数据导入 SQL 表

c# - 一次读取一个字符串,3x3 个字符

php - 如何从 WordPress 中的帖子类型获取所有帖子

php - 无法使用 PHP 7.2 从 MySQL 数据库中选择数据

r - 通过分隔项将列表类型的列转换为长格式