タグ付けされた質問 「xquery」

3
XPath / XQueryを使用して同じXML要素のすべての値を連結する
次のようなXML値があります。 <R> <I>A</I> <I>B</I> <I>C</I> ... </R> すべてのI値を連結して、単一の文字列として返しますABC...。 これで、XMLを細断し、結果をノードレスXMLとして集計し、結果に適用できる.values('text()[1]', ...)ことがわかりました。 SELECT ( SELECT n.n.value('text()[1]', 'varchar(50)') AS [text()] FROM @MyXml.nodes('/R/I') AS n (n) FOR XML PATH (''), TYPE ).value('text()[1]', 'varchar(50)') ; ただし、次のようなXPath / XQueryメソッドのみを使用してすべてを実行したいと思います。 SELECT @MyXml. ? ( ? ); そのような方法はありますか? この方向で解決策を探している理由は、実際のXMLにも他の要素が含まれているためです。たとえば、 <R> <I>A</I> <I>B</I> <I>C</I> ... <J>X</J> <J>Y</J> <J>Z</J> ... …

4
XMLの変更:属性を要素に
XML同様の構造のデータを含む列があります。 <Root> <Elements> <Element Code="1" Value="aaa"></Element> <Element Code="2" Value="bbb"></Element> <Element Code="3" Value="ccc"></Element> </Elements> </Root> SQL Serverを使用してデータを変更し、各Value属性を要素に変更するにはどうすればよいですか? <Root> <Elements> <Element Code="1"> <Value>aaa</Value> </Element> <Element Code="2"> <Value>bbb</Value> </Element> <Element Code="3"> <Value>ccc</Value> </Element> </Elements> </Root> 更新: 私のXMLは次のようになります。 <Root attr1="val1" attr2="val2"> <Elements> <Element Code="1" Value="aaa" ExtraData="extra" /> <Element Code="2" Value="bbb" ExtraData="extra" /> <Element Code="3" …
11 sql-server  xml  xquery 

2
属性に特定の文字が含まれていないXMLシーケンスを返す
次の単純なXMLを考えてみます。 <xml> <customer name="Max"> <email address="me@you.com" /> </customer> <customer name="Erik"> <email address="erik@your-mom.com" /> </customer> <customer name="Brent"> <email address="brentcom" /> </customer> </xml> アイテム<Customer>のaddress属性にが含まれて<email>いないシーケンスのリストを取得したい@。 したがって、次のような出力が必要です。 <customer name="Brent"> <email address="brentcom" /> </customer> mcve: DECLARE @x XML = '<xml> <customer name="Max"><email address="me@you.com" /></customer> <customer name="Erik"><email address="erik@your-mom.com" /></customer> <customer name="Brent"><email address="brentcom" /></customer> </xml>'; このクエリ: SELECT …
10 sql-server  xml  xquery 

1
SQL Serverの強く型付けされたxml要素の値をXQueryに置き換えます
XMLスキーマコレクション内で次のように定義された要素を指定します。 <xsd:element name="xid"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32" /> </xsd:restriction> </xsd:simpleType> </xsd:element> XQueryを使用して要素をどのように更新しますか? 要素は、スキーマコレクションのns名前空間内にあります。以下のクエリで要素を更新しようとしています: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?') where id = 11793 しかし、これは次のエラーを生成します: メッセージ9301、レベル16、状態1、行2 XQuery [cm.item.data.modify()]:このバージョンのサーバーでは、「としてキャスト」は使用できません。「としてキャスト」を使用してください 構文。 キャストを完全に削除してこのクエリを使用する場合: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value …

1
XML列のINおよびNOT IN
xml列を持つテーブルがあります。Xmlは <Root> <Row> <user>abc</user> <Rowid>1</Rowid> </Row> <Row> <user>vf</user> <Rowid>2</Rowid> </Row> <Row> <user>ert</user> <Rowid>3</Rowid> </Row> <Maxrowid>3</Maxrowid> </Root> 次に、以下のクエリは、ノード 'user'()に値 'abc'または 'xyz'を含むxml列を含む行のsl_no列とmyxmlcolumnを返します。クエリの下では、SQLのINオプションに似ています。 SELECT [mytable].[Sl_no], [mytable].[myxmlcolumn] FROM [mydb].dbo.[mytable] WHERE [myxmlcolumn].exist('for $x in /Root/Row where (($x/user[fn:upper-case(.)=(''ABC'',''XYZ'')])) return $x') > 0 SQL 'NOT IN'と同じように機能する同様のクエリが必要です。それは私の場合、xml列のノード「user」()に「abc」または「xyz」の値がない行が必要です。だから私を助けてください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.