表被命名爲MasterTable
的Sql XQuery的在更新查詢替換文本
列
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
列,所以我想在插入數據的時候它會像<en-US></en-US><it-IT></it-IT>
表Insert
空標籤元素,所以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數據類型的方法時收到以下錯誤「修改」。預計在這種情況下非增變方法。
我改變了這個'聲明@str爲varchar(200)= 'Test''到'聲明@str爲varchar(200) 集@str =' Test''和它的工作..感謝了很多 –
如果前面的代碼是'COALESCE(@Name,Name)',現在我想將其更改爲'UPDATE MasterTable set name = Name.modify('replace value of(en-US/text) ())[1]與sql:variable(「@ Str」)') 其中ID = 18'同樣 即在@Str中處理NULL –
也作爲'Name'列是'VARCHAR(200)所以我面臨直接調用'modify'的問題 –