2016-07-28 6 views
-2

xmlを含むTSQLテキストフィールドに挿入する方法を教えてください。MSSQLテキストに挿入する方法xmlとしてデータ型フィールド

MSSQLをバックエンドとして使用する私のアプリケーションのカスタムフィールドを作成することができます。これらのカスタムフィールドを作成すると、すべてがMIITEMという表のfldxmlという1つのフィールドに移動します。私は、挿入、更新文を書きたいが、私は<field></field>ここ

<field1></field1> is custFld1(Custom Field1) 
<field2></field2> is custFld2(Custom Field2) 
<field3></field3> is custFld3(Custom Field3) 
<field4></field4> is custFld4(Custom Field4) 

は、データがフィールド

<fields><field3>PFB652S6</field3><field1></field1><field2></field2><field4></field4></fields> 

enter image description here

でどのように見えるかである間 fldxmlフィールドにレコードを挿入する方法がわかりませんここ

は、データタイプ

enter image description here

です
+2

テキストデータ型を使用しないでください。 varchar(max)の方が10年以上にわたって推奨されていません。テキストデータ型は非常に扱いにくいです。手元にある質問のために、あなたが何をしようとしているのか分からず、投稿したサンプル "xml"が有効なxmlではありません。 –

答えて

0

実際、TEXTデータ型は使用しないでください。この目的のために、代わりにXMLを使用してください。

データ型に関係なく、TSQL XML DML機能を使用してTSQLのXMLを変更できます。これにより、INSERT、MODIFY、DELETEなどのDML文を記述してXML文書を変更することができます。以下は

ドキュメントでこれを実証する例です。

-- First declare a variable of type XML 
DECLARE @fields xml; 

-- Here are the values we will be manipulating 
DECLARE @nodeToReplace VARCHAR(MAX),@newValue VARCHAR(MAX) 
SET @nodeToReplace = 'field3' 
SET @newValue = 'PFB652S6' 

-- Then fetch the value from the database. Insert the correct where clause 
SELECT @fields=CAST(fldxml AS XML) FROM MIITEM WHERE ..... 

-- Now @fieds will contain your XML 
SELECT @fields AS OldValue; 

-- When the value of the node is empty, you have to insert the text node as follows. 
SET @fields.modify(' 
    insert text {sql:variable("@newValue")} as last into (/fields/*[ local-name()=sql:variable("@nodeToReplace") ])[1] 
'); 
SELECT @fields AS NewInsertedValue; 

-- When the value is present already, a slightly different syntax must be used to update it 
SET @newValue = 'BLABLA' 
SET @fields.modify(' 
    replace value of (/fields/*[local-name()=sql:variable("@nodeToReplace")][1]/text())[1] 
    with  sql:variable("@newValue") 
'); 
SELECT @fields AS NewUpdatedValue; 

が、これは十分にご質問に答えるなら、私に知らせてお気軽に。必要に応じてより具体的なヘルプを提供することができます。

関連する問題