从列中提取数据并使用它来更新另一列

时间:2018-01-28 20:49:17

标签: mysql database extract

我的数据库列中有XML数据。我想提取数据并将其粘贴到新列中

我有什么

id         data                          col1         col2
----------------------------------------------------------
1         <col1>data1</col1>
          <col2>data2</col2>

我需要什么

id         data                          col1         col2
----------------------------------------------------------
1                                        data1        data2

我可以只使用SQL吗?

之类的东西
UPDATE database SET col1 = extract('data', 'data1')...
谢谢。

1 个答案:

答案 0 :(得分:3)

如果你有mysql 5.7版,那么你可以使用mysql xml函数执行以下操作:

UPDATE t1 SET col1 = ExtractValue(data, '/col1'), col2 = ExtractValue(data, '/col2');

测试数据和输出:

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (
    id INT UNSIGNED NOT NULL,
    data TEXT,
    col1 VARCHAR(255),
    col2 VARCHAR(255)
);

INSERT INTO t1 (id, data) VALUES
(1, '<col1>data1</col1><col2>data2</col2>');

SELECT * FROM t1;

UPDATE t1 SET col1 = ExtractValue(data, '/col1'), col2 = ExtractValue(data, '/col2');

SELECT * FROM t1;

更新前:

+----+--------------------------------------+------+------+
| id | data                                 | col1 | col2 |
+----+--------------------------------------+------+------+
|  1 | <col1>data1</col1><col2>data2</col2> | NULL | NULL |
+----+--------------------------------------+------+------+

更新后:

+----+--------------------------------------+-------+-------+
| id | data                                 | col1  | col2  |
+----+--------------------------------------+-------+-------+
|  1 | <col1>data1</col1><col2>data2</col2> | data1 | data2 |
+----+--------------------------------------+-------+-------+