テーブルの名前はMasterTable
列
IDタイプBIGINT、
Nametype VARCHAR(200)(xml何らかの理由で型データを格納します)
Name次のように構造化されたデータが含まれています
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
テーブルに移動する必要がUpdateある場合Masterは、その時点でをキャストしVarcharて、特定のタグの一部、つまりいずれかをxml条件付きで更新/置換する必要があります。valueen-US / it-IT
また、列にデータ/タグがない可能性があるNameため、データを挿入するときにInsert、のようにテーブルのタグ要素が空になると思います<en-US></en-US><it-IT></it-IT>。したがって、updateクエリはタグ要素の空の値、つまりを処理する必要があります。en-US/it-IT
私は次の更新クエリのようにそれをやろうとしています。
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
クエリの実行時に次のエラーが発生します
xmlデータ型メソッド「modify」の不正使用。このコンテキストでは、ミューテイタ以外のメソッドが必要です。