MySQL如何通过"从列中拆分字符串"并将结果插入另一列?

时间:2017-02-14 22:30:35

标签: mysql

我想问一下如何从列中拆分字符串(表格中的所有行)" "并将结果插入到同一个表中的另一列

非常感谢您的任何建议。

表结构示例:

------------------------------------------
| Original string | Spliced  string       |
------------------------------------------
| Some string 001 | Some,String,001       |
------------------------------------------

1 个答案:

答案 0 :(得分:0)

如果我需要在分隔符上“分割”一个字符串,我可能会使用漂亮的SUBSTRING_INDEX函数。但是有一些怪癖需要注意。

我将采取的方法肯定是先写一个SELECT语句。这将包括SELECT列表中的表达式,它返回我想要分配给另一列的“分离”值。在编写UPDATE语句之前,我会使用SELECT语句测试这些表达式。

SELECT t.id
     , t.column_i_want_to_split
     , expr1
  FROM mytable t
 ORDER BY t.id

为了测试特定情况,我会使用内联视图

SELECT t.id
     , t.note
     , t.val
     , expr1
  FROM ( SELECT 1 AS id, 'empty string test' AS note, '' AS val
         UNION ALL SELECT 2, 'null', NULL
         UNION ALL SELECT 3, 'one space', ' '
         UNION ALL SELECT 4, 'four spaces', '    '
         UNION ALL SELECT 5, 'test5', ' abc def '
         UNION ALL SELECT 6, 'test6', 'g  hi kl  m'
       ) t
   ORDER BY t.id

一旦我将表达式返回到我想要分配给另一列的值,我就将SELECT转换为UPDATE语句。要处理所有行,请省略WHERE子句。

 UPDATE mytable t
    SET t.another_column = expr1

如果没有更明确的规范,或者至少是你试图实现的一些具体例子,我们只是在猜测。只给出问题的一般描述,我们所能提供的只是一些一般性建议。