我的数据库列中有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')...
谢谢。
答案 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 |
+----+--------------------------------------+-------+-------+