簡體   English   中英

如何從nvarchar(max)類型的列中存儲和提取XML信息,並在聯接中使用它?

[英]How to store and extract XML information from an nvarchar(max) type column, and use it in joins?

我有一個類型為'nvarchar(max)'的列,該列現在應包含XML信息,而不僅僅是字符串。

說:col1具有值'abc'現在它具有值,以及其他信息:

<el1>abc</el2>
<el2>someotherinfo</el2>

將信息存儲到列中很好,因為仍然可以將其作為字符串推入。 但是,我無法弄清楚從同一列中提取相同的信息並使用/替換相同信息“ abc”,而該信息正在其他表的各種其他聯接中使用。

當來自另一個表的值“ abcd”的信息也不會丟失其他信息時,如何將其推入abcd?

我正在從應用程序端構建XML,並在nvarchar()類型的列中對其進行更新。 所有列已被替換以保存XML,因此安全的假設是col1僅保存與上述類似的XML。 只需按原樣推送XML,它就可以正常工作。 但是,我應該如何提取信息以在聯接中使用它?

如何從此nvarchar()字符串中提取特定元素以在聯接中使用它? 以前,此列'Col1'只是用作字符串,並且進行了如下檢查:

where tablex.colx = table1.col1

或更新Table2,其中

將NVARCHAR數據轉換為XML數據類型后,就可以使用XML函數來獲取要加入的元素/屬性值:

WITH xoutput AS (
  SELECT CONVERT(xml, t.nvarchar_column) AS col
    FROM YOUR_TABLE t)
SELECT x.*
  FROM TABLE x
  JOIN xoutput y ON y.col.value('(/path/to/your/element)[1]', 'int') = x.id

由於數據類型轉換,它將無法使用索引...

備用版本,使用IN:

WITH xoutput AS (
   SELECT CONVERT(xml, t.nvarchar_column) AS col
     FROM YOUR_TABLE t)
SELECT x.*
  FROM TABLE x
 WHERE x.id IN (SELECT y.col.value('(/path/to/your/element)[1]', 'int')
                  FROM xoutput)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM