使用 TSQLmodify如何使用根 XML 元素初始化空列,并使用列的值來創建/填充嵌套元素?
據我所知,無法使用modify.
示例表...
Id Val MyXML
1 2 NULL
2 5 NULL
預期結果...
1 2 <data><val>2</val></data>
2 5 <data><val>5</val></data>
我能弄清楚的唯一方法是討厭的字串連接......
UPDATE MyTable
SET MyXML = '<data><val>' CONVERT(VARCHAR(10),Val) '</val></data>'
或者有兩個查詢,第一個創建根,第二個添加元素......
UPDATE MyTable
SET MyXML = '<data></data>'
UPDATE MyTable
SET MyXML.modify('insert <val>{sql:column("Val")}</val> into /data[1]')
理想情況下,我想要這樣的東西,但我不知道它是否可能......
UPDATE MyTable
SET MyXML.modify('insert <data><val>{sql:column("Val")}</val></data>')
uj5u.com熱心網友回復:
因為 MyXML 列具有初始 NULL 值,所以沒有modify(). 因此,您需要撰寫 XML,而不是修改。
SQL Server 原生提供了兩種 XML 組合方法:
- 該
FOR XML子句指示資料庫引擎將 SELECT 查詢的結果作為 XML 檔案回傳 - XQuery 主要用于檢索 XML 資料,也可用于創建 XML 檔案(或片段)。
您可以通過 XQuery 嘗試 SQL Server 原生 XML 組合。看看下面兩種方法。
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (id INT IDENTITY PRIMARY KEY, Val INT, MyXML XML);
INSERT INTO @tbl (Val, MyXML) VALUES
(2, NULL),
(5, NULL);
-- DDL and sample data population, end
SELECT * FROM @tbl;
-- Method #1
UPDATE @tbl
SET MyXML = CAST(N'' AS XML).query('
<data>
<val>{sql:column("Val")}</val>
</data>
');
SELECT * FROM @tbl;
-- Method #2
UPDATE @tbl
SET MyXML = CAST(N'' AS XML).query('
element data {
element val { text {sql:column("Val")}
}
}
');
SELECT * FROM @tbl;
uj5u.com熱心網友回復:
我不知道如何使用修改來執行此操作,但您應該能夠執行以下操作:
UPDATE MyTable
SET MyXML = (
SELECT [Val] AS [val]
FOR XML PATH('data'), TYPE
)
WHERE MyXML IS NULL
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/524184.html
標籤:sql服务器xmltsqlsql-server-2016xml.修改
上一篇:androidleanbackbrowseSupportFragment回傳錯誤的selectedPosition?
