【发布时间】:2011-02-23 07:08:06
【问题描述】:
表被命名为MasterTable
列
ID 输入BIGINT,
Name type VARCHAR(200)(由于某些原因存储xml类型数据)
Name 包含结构如下的数据
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
当我需要Update Master 表时,那时我需要将Varchar 转换为xml 然后有条件地更新/替换 value 部分特定的标签,即en-US / it-IT。
Name 列中也有 No data/tags 的可能性,所以我认为在插入数据时它会 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'。在这种情况下需要一个非mutator方法。
【问题讨论】:
标签: sql-server sql-update xquery-sql xquery-update