我有一个包含多个值的非正常字段,因为它是直到现在才打算查询的 Xml 数据。MySQL 可以将此 xml 列拆分为多行吗?
桌子
NameA | <Xml><Values<Value>1</Value><Value>2</Value><Value>3</Value></Values></Xml>
NameB | <Xml><Values<Value>1</Value><Value>2</Value></Values></Xml>
NameC | <Xml><Values<Value>1</Value><Value>2</Value><Value>3</Value><Value>4</Value></Values></Xml>
我想
NameA | 1
NameA | 2
NameA | 3
NameB | 1
喜欢这个 MSSQL/TSQL 解决方案
SELECT
I.Name,
Value.value('.','VARCHAR(30)') AS Value
FROM
Item AS I
CROSS APPLY
Xml.nodes('/Xml/Values/Value') AS T(Value)
WHERE
I.TypeID = 'A'
但是在MySQL中我只能得到
NameA | 123
NameB | 12
NameC | 1234
和
SELECT
I.`Name`,
ExtractValue(Xml,'/Xml/Values/Value') AS ListOfValues
FROM
Item AS I
WHERE
I.TypeID = 'A'
;
有什么优雅的方法可以在 MySQL 中拆分 xml?