使用計算資料行中的 XML

XML 執行個體可依計算資料行的來源或計算資料行的類型來出現。本主題的範例將示範如何搭配計算資料行使用 XML。

從 XML 資料行建立計算資料行

在下列 CREATE TABLE 陳述式中,從 col1 計算出 xml 類型資料行 (col2):

CREATE TABLE T(col1 varchar(max), col2 AS CAST(col1 AS xml) )  

xml 資料類型也可以建立計算資料行的來源出現,如下列 CREATE TABLE 陳述式所示:

CREATE TABLE T (col1 xml, col2 as cast(col1 as varchar(1000) )) 

您可以從 xml 類型的資料行擷取值以建立計算資料行,如下列範例所示。因為 xml 資料類型方法無法直接用來建立計算資料行,本範例先定義一個函數 (my_udf),以傳回 XML 執行個體的值。該函數會包裝 xml 類型的 value() 方法。接著會在計算資料行的 CREATE TABLE 陳述式中指定函數名稱。

CREATE FUNCTION my_udf(@var xml) returns int
AS BEGIN 
RETURN @var.value('(/ProductDescription/@ProductModelID)[1]' , 'int')
END
GO
-- Use the function in CREATE TABLE.
CREATE TABLE T (col1 xml, col2 as dbo.my_udf(col1) )
GO
-- Try adding a row. 
INSERT INTO T values('<ProductDescription ProductModelID="1" />')
GO
-- Verify results.
SELECT col2, col1
FROM T
 

就如同上述範例,下列範例定義一個函數,以傳回計算資料行的 xml 類型執行個體。在函數中,xml 資料類型的 query() 方法會擷取 xml 類型參數中的值。

CREATE FUNCTION my_udf(@var xml) 
  RETURNS xml AS 
BEGIN 
   RETURN @var.query('ProductDescription/Features')
END

在下列 CREATE TABLE 陳述式中,Col2 是一個計算資料行,它使用了該函數所傳回的 XML 資料 (<Features> 元素):

CREATE TABLE T (Col1 xml, Col2 as dbo.my_udf(Col1) )
-- Insert a row in table T.
INSERT INTO T VALUES('
<ProductDescription ProductModelID="1" >
  <Features>
    <Feature1>description</Feature1>
    <Feature2>description</Feature2>
  </Features>
</ProductDescription>')
-- Verify the results.
SELECT *
FROM T

本章節內容

主題

描述

升級屬性

描述如何搭配計算資料行和屬性資料表使用屬性升級。

請參閱

其他資源