2016-05-06 8 views
0

いただきましたがFOR XML PATH( '')の意味は何ですか?

FOR XML PATH('')? 

の意味は、それが何を表しているんです。ルートノードが存在しないため。

+3

MSDNの関連ドキュメントはありますか?もしそうなら、あなたはどのような部分を理解するのに困っていますか? – Luaan

+3

この質問は研究努力を示していません。 –

+0

@MartinSmith T-SQLブックの 'for xml'文書は良いスタートです:) – Luaan

答えて

3

「ルート」と「要素」について少し混同しているようです。 XMLでは、ルートはツリーの最上部にある単一のノードです。

FOR XML PATHを何も指定せずに指定すると、「行」というXML要素のセットが取得されます。これはデフォルトの名前です。

USE AdventureWorks2016CTP3; 
GO 

SELECT BusinessEntityID, FirstName, LastName 
    FROM Person.Person 
    WHERE BusinessEntityID BETWEEN 14500 AND 14502 
    FOR XML PATH; 

enter image description here

私たちは、このような囲むXML要素に別の名前を指定することもできます。

SELECT BusinessEntityID, FirstName, LastName 
    FROM Person.Person 
    WHERE BusinessEntityID BETWEEN 14500 AND 14502 
    FOR XML PATH('Person'); 

enter image description here

我々はトップレベルのルート要素で囲まれるXML要素をしたい場合は、我々はこのようにそれを指定することができます。要素名に空の文字列を指定する

SELECT BusinessEntityID, FirstName, LastName 
    FROM Person.Person 
    WHERE BusinessEntityID BETWEEN 14500 AND 14502 
    FOR XML PATH('Person'), 
    ROOT('People'); 

enter image description here

、それが囲むXML要素を除外する原因となります。それは非常に独特なことです。なぜ誰かがそれをしたいと思うだろうと私は想像することはできません。

SELECT BusinessEntityID, FirstName, LastName 
    FROM Person.Person 
    WHERE BusinessEntityID BETWEEN 14500 AND 14502 
    FOR XML PATH(''); 

enter image description here

ただしオンラインブックは、これは正しい動作であると言うん。 FOR XML句の基本構文>https://msdn.microsoft.com/en-gb/library/ms190922.aspx>引数> PATHを参照してください。

空の文字列(FOR XML PATH( ''))を指定すると、ラッパー要素は生成されません。

+0

驚くべき答え。どうもありがとう..!! –

+0

あなたは大歓迎です! FOR XMLは非常に複雑ですが、最終的に意味があります。 – RichardCL

1

MSDNから:

あなたは長さゼロの文字列を指定した場合、ラッピング要素が生成されていません。

' 'は失敗します。空の文字列であり、1つのスペースではありません)。

これはルート要素とは関係がありません。つまり、が対象です。これは、ラップ要素についてのみです。

+0

答えをありがとう。私はこのことに関して何かを見つけることができませんでしたので、ここでこの質問をしました。 XMLへのルートノードがない場合、これを行うのは何ですか? –

+4

@NimbleFungus - 私が最も頻繁に使用することがわかっているユースケースは、名前のない列の動作と組み合わせた文字列連結です。例えば'%( '。'、 'nvarchar(max)')' –

+0

@MartinSmith Martinさん、ありがとうございました。 –

関連する問題