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

「eXtensible Markup Language」の略。構造化データを転送するためのテキストマークアップ言語。

2
HTMLコードをXMLとして読み取り、SQLのサンプルのような出力を取得する方法
データベースにHTMLコードが格納されていて、それをXMLとして読みたい。 私のコード: http://rextester.com/RMEHO89992 これは私が持っているHTMLコードの例です: <div> <section> <h4> <span> A </span> </h4> <ul> <li> <span> Ab</span> AD <span> AC </span> </li> <li> <span> Ag</span> <span> AL </span> </li> </ul> <h4> <span> B </span> </h4> <ul> <li> <span> Bb</span> BD <span> BC </span> </li> <li> <span> Bg</span> <span> BL </span> </li> </ul> …
11 sql-server  t-sql  xml 

2
動的SQL(ピボットクエリ)をxml出力に変換するときに、日付の最初の桁がUnicodeに変換されるのはなぜですか?
Bluefeetのこの素晴らしい例/dba//a/25818/113298を使用して、ピボットを作成し、それをxmlデータに変換しています。 パラメータの宣言 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); 次に、多くのコードを含むCTEがあり、CTEの最終結果が一時DBに配置されます(例と同じ)。 SELECT B.[StayDate] -- this is a date dd-mm-yyyy , B.[Guid] INTO #tempDates FROM BaseSelection B colsの生成(例と同じ) SELECT @cols = STUFF((SELECT distinct ',' +QUOTENAME(convert(char(10), [StayDate] , 120)) FROM #tempDates FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,''); 結果セットは私が期待すべきものです set @query = 'SELECT …
11 sql-server  xml  pivot 

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パラメータを使用して複数のデータをアップサートするときにマージクエリの使用を回避する方法
値の配列でテーブルを更新しようとしています。配列の各項目には、SQL Serverデータベースのテーブルの行と一致する情報が含まれています。行がテーブルに既に存在する場合、その行を指定された配列の情報で更新します。それ以外の場合は、テーブルに新しい行を挿入します。基本的にアップサートについて説明しました。 現在、私はこれを、XMLパラメーターを受け取るストアード・プロシージャーで実現しようとしています。テーブル値パラメーターではなくXMLを使用する理由は、後者の場合、SQLでカスタムタイプを作成し、このタイプをストアドプロシージャに関連付ける必要があるためです。将来、ストアドプロシージャまたはdbスキーマの何かを変更した場合、ストアドプロシージャとカスタムタイプの両方をやり直す必要があります。このような状況は避けたいです。さらに、データ配列のサイズが1000を超えることはないため、TVPがXMLよりも優れていることは、私の状況では役に立ちません。これは、ここで提案されているソリューションを使用できないことを意味します。SQLServer 2008でXMLを使用して複数のレコードを挿入する方法 また、ここでの同様のディスカッション(UPSERT-MERGEまたは@@ rowcountのより良い代替案はありますか?)は、テーブルに複数の行をアップサートしようとしているため、私が求めているものとは異なります。 次の一連のクエリを使用して、xmlから値を更新することを望んでいました。しかし、これはうまくいきません。このアプローチは、入力が単一の行である場合にのみ機能すると想定されています。 begin tran update table with (serializable) set select * from xml_param where key = @key if @@rowcount = 0 begin insert table (key, ...) values (@key,..) end commit tran 次の代替方法は、完全なIF EXISTSまたは次の形式のバリエーションの1つを使用することです。しかし、私は次善の効率であることを理由にこれを拒否します: IF (SELECT COUNT ... ) > 0 UPDATE ELSE INSERT 次のオプションは、http://www.databasejournal.com/features/mssql/using-the-merge-statement-to-perform-an-upsert.htmlで説明されているようにMergeステートメントを使用することでした。しかし、それから私はここでマージクエリの問題について読みました:http : …


1
要素名の変数
私は問題なく動作するこのtSQLコードを持っています: SELECT c.logguid, a.b.value('./PropertyValue', 'varchar(max)') asd FROM [dnn].[dbo].[EventLog2] c cross apply sss.nodes('/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")]') as a(b) しかし、私ができるようにしたいのは、各値の間でORされる値の多くのペアの動的リストを渡すことです。 SELECT c.logguid, a.b.value('./PropertyValue', 'varchar(max)') asd FROM [dnn].[dbo].[EventLog2] c cross apply sss.nodes( '/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y") or PropertyName=sql:variable("@a") and PropertyValue=sql:variable("@b") ]' ) as a(b) これを行う方法はありますか?
9 t-sql  xml 

2
XMLデータを格納するデータ型:VARCHAR(MAX)またはXML
SQL Server 2008を使用して新しいリソースセットのスキーマを定義しています...この場合、各レコード(行など)はXMLフラグメントを格納する必要があります。時々; 頻繁ではありませんが; 要素と属性の値を見つけるには、XMLをクエリする必要があります。自分の考案に任せれば、xmlデータ型を使用する傾向がありますが、これは問題があると考えられています。それが私の質問につながります。 このシナリオを前提として、XML列にxmlを格納するか、varchar(MAX)列にXMLを格納するかを決定する際に考慮すべき要素は何ですか。 それが役立つ場合...ここにいくつかの追加の詳細があります: これらのフラグメントのスキーマ(XSDなど)の使用に関して決定は行われていません フラグメントのサイズは、小さいものから非常に大きいものまでさまざまです。 すべてのXMLは整形式です 1日の間に、最大3か月間必要なオンラインクエリサポートで最大10,000個のフラグメントが収集されます XMLに対するクエリは1日を通して発生しますが、このタイプの同時クエリがほとんどないため、軽いままです。

3
XMLクエリの質問
次のSQL XMLから "DATE"値を取得するSQLクエリを生成しようとしています。 私はこのようなことを試しましたが、概念を理解しているとは思いません。 select xConfig.value('(/SearchjobConfig/QueryString/SearchCriteria/ExpressionSet/SimpleAttributeExpression) [1]','nvarchar(max)') from Job テキストとしてのXMLは次のとおりです。 <SearchJobConfig> <QueryID>1072</QueryID> <QueryString> <SearchCriteria name="Search query" > <ExpressionSet logicalOperator="AND"> <SimpleAttributeExpression displayName="Date" npmPropertyId="4" searchOperation="GREATER_EQUAL" dataType="string" caseSensitive="false">2019-06-01T04:00:00</SimpleAttributeExpression> <SimpleAttributeExpression displayName="Date" npmPropertyId="4" searchOperation="LESS_EQUAL" dataType="string" caseSensitive="false">2019-06-13T03:59:59</SimpleAttributeExpression> <SimpleAttributeExpression displayName="Class" npmPropertyId="1056" searchOperation="EQUALS" dataType="int32" caseSensitive="false">65</SimpleAttributeExpression> </ExpressionSet> </SearchCriteria> </QueryString> </SearchJobConfig> 予想される出力は日付になります: 2019-06-01T04:00:00 2019-06-13T03:59:59 そして、同じ行で結果を得るには何が必要でしょうか。例: date_val_start date_val_end 2019-06-01T04:00:00 2019-06-13T03:59:59 SQL …

1
Xpathのみを使用してSQLサーバーの空のXMLタグからnullを返す方法は?
レコードに関するさまざまなユーザー定義データポイントをXML列に格納するアプリケーションがあります。これらがどのように保存または更新されるかは、私には制御できません。 列をクエリすると、3つの値のいずれかが返されます。 値 ヌル 空の文字列 $ 64質問 xpathを使用して、空の文字列をnullとして返したいのですが。 nullを空の文字列として返すことに関する多くの答えを見つけましたが、この方法では何も起こりません。 それらは、誰かが値を削除したときにそのようになり、タグを削除するのではなく、タグにブランクになり<value />ます。nullは、値が設定されていない場合に発生します。xsi:nilは含まれていません。 私はケースステートメントでそれをしました: select so.SalesOrderId, Case when sopc.value('(Value)[1]','smalldatetime') IS null then Null when sopc.value('(Value)[1]','smalldatetime') ='' then Null Else sopc.value('(Value)[1]','smalldatetime') End as sopc From SalesOrders so Outer apply so.CustomColumns.nodes('/CustomColumnsCollection/CustomColumn[Name="ProjCompleted"]') sopc(sopc) しかし、これは非効率に感じられ、これが唯一の列ではないため、コードが長くなり、保守が難しくなります。 編集してサンプルデータを含めます SalesOrderId CustomColumns SO 1 "<CustomColumnsCollection> <CustomColumn> <Name>ProjCompleted</Name> <DataType>1</DataType> <Value /> …

1
フォルダー内の複数の.DTSXパッケージファイルのPackageFormatVersionを決定する
Kenneth Fisherが、私のSSISパッケージとはどのSQLバージョンであるかを判断する方法についてブログ投稿しました。2015年4月。 これにはPackageFormatVersion、XMLメタデータで見つかったSSISパッケージのどれにSQLバージョンがマップされているかのテーブルがあります。これは、1つの個別のパッケージを確認するときに役立ちます。 約100のSSIS .DTSXパッケージのフォルダーがあり、それらのSQLバージョンをすべて知る必要があります。 フォルダー(ファイルシステム)内のPackageFormatVersion複数の.DTSXパッケージの何(つまり、SQLバージョン)を一括して決定することができますか? 最終的な目標は、現在ソース管理システムが存在しないため、これらのパッケージを取得するために取得および実装する適切なTFSバージョンを決定することです。Kennethが提示する表は、この質問に答えるのに役立ちますが、最初に、SQLバージョンのパッケージを確認する必要があります。 BIDSもSSDTもインストールされていないとします。 必要な出力が次のようなものであると想定します。ここで、pipeは新しい列を指定します。 PackageFilename | PackageFormatVersion -------------------------------------- Package1.dtsx | 3 Package2.dtsx | 4 PowerShell、TSQL、ディレクトリ構造をクロールできるサードパーティツール、またはその他のツールを歓迎します。

2
XMLの解析が遅い
私は現在、やや問題のあるストアドプロシージャを調整しようとしています。実行に関連するコストの大部分は、いくつかのXMLを解析して一時テーブルに解析することに起因することに気付きました。問題のSQLは次のとおりです。 CREATE TABLE #ChangeSet ( RemarkTypeID TINYINT NOT NULL PRIMARY KEY, RemarkText VARCHAR(2500) NOT NULL, ListingID INT NOT NULL ) INSERT INTO #ChangeSet (RemarkTypeID, RemarkText, ListingID) SELECT T.c.value('@RemarkTypeID[1]','tinyint') AS RemarkTypeID, T.c.value('@RemarkText[1]','varchar(2500)') AS RemarkText, @ListingID FROM @RemarksXml.nodes('/Remarks[1]/Remark') AS T(c) また、あなたは構文解析されているXMLの構造のいくつかの考えを持っています: <Remarks> <Remark xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RemarkID="211767" DateTimeCreated="1991-11-19T10:43:50" DateTimeModified="1992-01-01T10:43:50" RemarkTypeID="8" RemarkText="aaaWasher,Dryer,Refriger,Microwav" /> <Remark xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …

1
XMLをMySQLテーブルに変換する
次の形式の大きなXMLファイルがあり、このファイルをMySQLテーブルに変換する必要があります。どうすればこれを達成できますか? ~~~~~~~~~~ <host starttime="1392325468" endtime="1392325486"><status state="up" reason="user-set"/> <address addr="192.168.0.2" addrtype="ipv4"/> <hostnames> </hostnames> <ports><extraports state="filtered" count="2"> <extrareasons reason="no-responses" count="2"/> </extraports> <port protocol="udp" portid="22"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port> <port protocol="udp" portid="123"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ntp" method="table" conf="3"/></port> </ports> </host> ~~~~~~~~~~
8 mysql  xml 

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.