从列中提取数据并使用它来更新另一列
Extract data from column and use it to update another column
我的数据库列中有 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')...
谢谢。
如果您有 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 |
+----+--------------------------------------+-------+-------+
我的数据库列中有 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')...
谢谢。
如果您有 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 |
+----+--------------------------------------+-------+-------+