계산 열에서 XML 사용

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

XML 인스턴스는 계산 열의 원본이나 계산 열의 유형으로 표시될 수 있습니다. 이 문서의 예제에서는 계산 열에서 XML을 사용하는 방법을 보여 줍니다.

XML 열에서 계산 열 만들기

다음 CREATE TABLExml 에서 형식 열(col2)은 다음에서 col1계산됩니다.

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 데이터 형식 메서드는 계산 열을 만드는 데 직접 사용할 수 없으므로 먼저 XML 인스턴스에서 값을 반환하는 함수(my_udf)를 정의합니다. 함수는 형식의 메서드를 value() 래핑합니다 xml . 그런 다음 계산 열의 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 형식 인스턴스를 반환하는 함수를 정의합니다. 함수 query() 내에서 xml 데이터 형식의 메서드는 형식 매개 변수에서 xml 값을 검색합니다.

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

다음 CREATE TABLECol2 에서는 함수에서 반환되는 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;

참고 항목