表はMasterTable
のSqlのXqueryは、更新クエリのテキストを置換する方法
列
ID
タイプBIGINT
、
Name
タイプVARCHAR(200)
(いくつかの理由で店舗xml
型のデータを)
として命名されましたName
には、
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
私はVarchar
条件付きで、その後xml
に更新/特定のタグすなわちいずれかen-US/it-IT
のvalue
一部を置き換えるキャストする必要があり、その時点で、その後Master
表をUpdate
する必要があります。
もデータなし/タグので、私はそれが<en-US></en-US><it-IT></it-IT>
のようなテーブルでInsert
空のタグ要素なので、update
クエリはを処理する必要がありますデータを挿入する時に考えるName
列であることのチャンスがありますタグ要素の空の値、つまりen-US/it-IT
です。
私は次の更新クエリのようにしようとしています。クエリのXMLデータ型のメソッドの
不正使用を実行しているとき、私は次のエラーを取得
DECLARE @Str VARCHAR(200) SET @Str = 'Test Text' UPDATE [MasterTable] SET [Name] = cast([MasterTable].[Name] as xml).modify('replace value of (en-US/text())[1] with sql:variable("@Str")') WHERE [ID]=18
「を変更」。この文脈では、非ミューテータ法が期待されている。
私はこの '@str VARCHAR(200)を宣言= 'Test''は' @str varchar型を宣言するために(200) セット@str =' Test''を変更していたし、それはどうもありがとう –
..働きました前のコードが 'COALESCE(@Name、Name)'だった場合のやり方を教えてください。今度は 'UPDATE MasterTable 'をName = Name.modify(' en-US/text ( "@ Str")で) ここで、ID = 18のように @StrのNULLを扱います。 –
また、 'Name'カラムが' VARCHAR(200) 'であるため、だから私は直接それに 'modify'を呼び出すという問題に直面しています –