列の1つがXML形式のデータをテーブルから取得しています。列の名前は「更新済み」、表は「監査」です。フィールドは次のようになります。SQL ServerからXMLフィールドを取得しようとしています
<Fields><Field Name="DateFrom"/><Field Name = "Type 1"/><Field Name = "Type 2/></Fields>
<Fields><Field Name = "DateFrom"/></Fields>
<Fields><Field Name="DateFrom"/><Field Name = "Note"/><Field Name = "Type 1"/></Fields>
XMLフィールドは、大きなクエリの一部です:
Select id, Updated
from Audit
最後はIDが非XML列であることを、次のようになります。
ID Updated
123 DateFrom, Type1, Type2
323 DateFrom
455 DateFrom, Note, Type1
私はオンラインで見つけたいくつかのことを試しましたが、これを正しく実行していません。私が試した1つの方法は次のとおりでした:
Select Updated.value('/Fields/Field Name)[1]', 'nvarchar(max)') as NewUpdated from Audit.
アイデアはありますか?
を。最初のものだけが必要な場合は、現在のクエリを '(Fields/Field/@ Name)[1]'として調整することができます。 'SELECT NewUpdated = ABvalue( '@ Name'、 'nvarchar(max)')FROM Audit CROSS APPLY Audit.Updated.nodes( 'Fields/Field')AS A(B);' – ZLK
私はすべてのフィールドを取得する必要があります。私はクロスを適用しようとしているが、私はエラーが発生している: "Audit.updated.nodes 'は認識された関数名ではない:私はこれをしようとしている:select newupdated = ABvalue(' @ name '、' nvarchar(max ) '' Audit CrossからAudit.updated.nodes( 'Fields/Field')をA(B)として適用; – jackstraw22
Uh、どのバージョンのSQL Serverを使用していますか? '.value(...)')、SQL Server 2005などを使用していない限り、なぜうまくいかないのか考える理由はありません。 – ZLK