如何将一列分为两列?

时间:2015-10-08 07:44:26

标签: mysql

我有这张桌子:

+---------+---------------+------------+  
| c_data  | c_characters  | c_numbers  |  
+---------+---------------+------------+  
| abc123  |               |            |
+---------+---------------+------------+  
| hb045   |               |            |
+---------+---------------+------------+  
| awrg5   |               |            |
+---------+---------------+------------+  
| xyz456  |               |            |
+---------+---------------+------------+

我想要单独的c_data字符和数字, 然后更新到c_characters和c_numbers字段
如何使用查询更新字段?

1 个答案:

答案 0 :(得分:2)

不幸的是,MySQL还没有REGEXP_REPLACE() function like other databases。如果你愿意,你可以给issue 29781一些爱。

但由于您只是将数字作为分离标准,因此您可以编写以下语句以获得您正在寻找的结果:

UPDATE my_table
SET c_characters =
  replace(
    replace(
      replace(
        replace(
          replace(
            replace(
              replace(
                replace(replace(replace(c_data, '0', ''), '1', ''), '2', ''), '3', ''
              ), '4', ''
            ), '5', ''
          ), '6', ''
        ), '7', ''
      ), '8', ''
    ), '9', ''
  ),
  c_numbers =
    replace(v, 
      replace(
        replace(
          replace(
            replace(
              replace(
                replace(
                  replace(
                    replace(replace(replace(c_data, '0', ''), '1', ''), '2', ''), '3', ''
                  ), '4', ''
                ), '5', ''
              ), '6', ''
            ), '7', ''
          ), '8', ''
        ), '9', ''
      ), ''
    )