これまで照会されることを意図していなかった 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を分割するエレガントな方法はありますか?