表命名为MasterTable
列
ID
类型BIGINT
,
Name
类型(出于某些原因VARCHAR(200)
存储类型数据)xml
Name
包含结构为的数据
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
当我需要表格时,那时我需要将其Update
转换为然后有条件地更新/替换特定标签的部分,即。Master
Varchar
xml
value
en-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 数据类型方法“修改”。在这种情况下,需要一个非突变方法。