本製品 では、XML をカラム値として返すことができます。本製品 を使って、これらのカラム値においてSQL 関数を使用できます。次のセクションでは例を示します。参考のために文字列関数 を参照してください。
このセクションの例では、次の配列を使用します(XML オブジェクトと配列のパーシングについての詳細は階層データの解析 を参照してください)。
<grades>
<student>
<grade>A</grade>
<score>2</score>
</student>
<student>
<grade>A</grade>
<score>6</score>
</student>
<student>
<grade>A</grade>
<score>10</score>
</student>
<student>
<grade>A</grade>
<score>9</score>
</student>
<student>
<grade>B</grade>
<score>14</score>
</student>
</grades>
XML_EXTRACT
XML_EXTRACT でXML オブジェクトから個別の値を抜き出すことができます。次のクエリは、関数に第二引数として渡されたXML パスに基づいて、以下に示す値を返します。
SELECT Name, XML_EXTRACT(grades,'[0].grade') AS Grade, XML_EXTRACT(grades,'[0].score') AS Score FROM Students;
XML_COUNT
XML_COUNT 関数はXML オブジェクト内のXML 配列のエレメント数を返します。次のクエリは、関数に第二引数として渡されたXML パスにより指定されたエレメント数を返します。
SELECT Name, XML_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
XML_SUM
XML_SUM 関数は、XML オブジェクト内のXML 配列の数値の合計を返します。次のクエリは、関数に第二引数として渡されたXML パスにより指定された合計値を返します。
SELECT Name, XML_SUM(score,'[x].score') AS TotalScore FROM Students;
XML_MIN
XML_MIN 関数は、XML オブジェクト内のXML 配列の最小値を返します。次のクエリは、関数に第二引数として渡されたXML パスにより指定された最小値を返します。
SELECT Name, XML_MIN(score,'[x].score') AS LowestScore FROM Students;
XML_MAX
XML_MAX 関数は、XML オブジェクト内のXML 配列の最大値を返します。次のクエリは、関数に第二引数として渡されたXML パスにより指定された最大値を返します。
SELECT Name, XML_MAX(score,'[x].score') AS HighestScore FROM Students;