指定された列から返された値にタグを付ける関数です。
Synopsis
XMLELEMENT(tag,expression[,expression])
XMLELEMENT(tag,XMLATTRIBUTES(expression [AS alias]),expression[,expression])
一般的に
expression は、クエリで返される複数行の中のフィールド名 (または、フィールド名を 1 つ以上含む式) です。
タグを付ける値が空文字列 ('') または NULL の場合、次のように返します。
expression に複数のコンマ区切り要素が含まれる場合、次の形式のように、結果が連結されます。
<tag ID='63' >value</tag>
XMLELEMENT と XMLFOREST の比較
データ値に、XML/HTML でタグまたはその他のコーディングとして解釈される句読点文字が含まれる場合、
XMLFOREST と
XMLELEMENT はこの文字を対応するエンコード形式に変換します。
入力文字列でアポストロフィを表すには、
'can''t' のように、2 つのアポストロフィを指定します。列のデータには、アポストロフィを 2 つ付ける必要はありません。
次の例は、通常のデータおよび XML タグが付けられたデータとして、Sample.Person の各個人の Name フィールドの値を返します。
SELECT Name,
XMLELEMENT("Para",Name) AS ExportName
FROM Sample.Person
Name ExportName
Emerson,Molly N. <Para>Emerson,Molly N.</Para>
次の例は、Sample.Person の個別の Home_City と Home_State のペアの値ごとに XML のタグ <Address> ... </Address> を付けて返します。
SELECT DISTINCT
XMLELEMENT(NAME "Address",Home_City,' ',Home_State) AS CityState
FROM Sample.Person
ORDER BY Home_City
上の例では、オプションの NAME キーワードが使用されています。以下の例は、NAME キーワードを
tag 値なしで使用します。
SELECT DISTINCT
XMLELEMENT(NAME,Home_City,' ',Home_State) AS CityState
FROM Sample.Person
ORDER BY Home_City
この場合、同じデータを返しますが、既定のタグ <Name> ... </Name> が付けられます。
SELECT Name,XMLELEMENT("Para",Home_State,
XMLELEMENT("Emphasis",Name),Age)
FROM Sample.Person
<Para>CA<Emphasis>Emerson,Molly N.</Emphasis>24</Para>
以下のクエリは、Sample.Person の Name フィールドの値を返します。これはデータに XML のタグ付けをし、このタグ内で ID フィールドをタグ属性として使用したものです。
SELECT XMLELEMENT("Para",XMLATTRIBUTES(ID),Name)AS ExportName
FROM Sample.Person
ExportName
<Para ID='101' >Emerson,Molly N.</Para>
属性のエイリアスの指定方法を、以下の例に示します。
SELECT XMLELEMENT("Para",XMLATTRIBUTES(ID AS ItemKey),Name)AS ExportName
FROM Sample.Person
ExportName
<Para ItemKey='101' >Emerson,Molly N.</Para>