XML 데이터 검색 및 쿼리Retrieve and Query XML Data

이 항목에서는 XML 데이터를 쿼리할 때 지정해야 하는 쿼리 옵션에 대해 설명합니다.This topic describes the query options that you have to specify to query XML data. 또한 XML 인스턴스가 데이터베이스에 저장될 때 보존되지 않는 인스턴스의 일부분에 대해 설명합니다.It also describes the parts of XML instances that are not preserved when they are stored in databases.

보존되지 않는 XML 인스턴스 기능 Features of an XML Instance That Are Not Preserved

SQL ServerSQL Server 에서는 XML 인스턴스의 내용을 보존하지만 XML 데이터 모델에서 중요하다고 간주되지 않는 XML 인스턴스의 측면은 보존하지 않습니다. preserves the content of the XML instance, but does not preserve aspects of the XML instance that are not considered to be significant in the XML data model. 즉, 검색된 XML 인스턴스는 서버에 저장된 인스턴스와 다를 수 있지만 동일한 정보를 포함한다는 의미입니다.This means that a retrieved XML instance might not be identical to the instance that was stored in the server, but will contain the same information.

XML 선언XML Declaration

인스턴스가 데이터베이스에 저장될 때 인스턴스에 있는 XML 선언이 보존되지 않습니다.The XML declaration in an instance is not preserved when the instance is stored in the database. 예를 들어For example:

CREATE TABLE T1 (Col1 int primary key, Col2 xml)  
GO  
INSERT INTO T1 values (1, '<?xml version="1.0" encoding="windows-1252" ?><doc></doc>')  
GO  
SELECT Col2  
FROM T1  

결과는 <doc/>입니다.The result is <doc/>.

XML 데이터가 <?xml version='1.0'?>데이터 형식 인스턴스에 저장될 때 xml 과 같은 XML 선언이 보존되지 않습니다.The XML declaration, such as <?xml version='1.0'?>, is not preserved when storing XML data in an xml data type instance. 이것은 의도적인 것입니다.This is by design. XML 선언()과 해당 특성(version/encoding/stand-alone)은 데이터가 xml유형으로 변환된 다음 삭제됩니다.The XML declaration () and its attributes (version/encoding/stand-alone) are lost after data is converted to type xml. XML 선언은 XML 파서에 대한 지시어로 취급됩니다.The XML declaration is treated as a directive to the XML parser. XML 데이터는 내부적으로 ucs-2로 저장되며The XML data is stored internally as ucs-2. XML 인스턴스의 다른 모든 PI는 보존됩니다.All other PIs in the XML instance are preserved.

특성 순서Order of Attributes

XML 인스턴스의 특성 순서는 보존되지 않습니다.The order of attributes in an XML instance is not preserved. xml 유형의 열에 저장된 XML 인스턴스를 쿼리할 때 결과 XML의 특성 순서는 원래 XML 인스턴스와 다를 수 있습니다.When you query the XML instance stored in the xml type column, the order of attributes in the resulting XML may be different from the original XML instance.

따옴표로 묶는 특성 값Quotation Marks Around Attribute Values

특성 값에 표시된 작은따옴표와 큰따옴표는 보존되지 않습니다.Single quotation marks and double quotations marks around attribute values are not preserved. 특성 값은 이름 및 값의 쌍으로 데이터베이스에 저장됩니다.The attribute values are stored in the database as a name and value pair. 물음표는 저장되지 않습니다.The quotation marks are not stored. XML 인스턴스에 대해 XQuery가 실행되는 경우 결과 XML은 특성 값이 큰따옴표로 묶여서 직렬화됩니다.When an XQuery is executed against an XML instance, the resulting XML is serialized with double quotation marks around the attribute values.

DECLARE @x xml  
-- Use double quotation marks.  
SET @x = '<root a="1" />'  
SELECT @x  
GO  
DECLARE @x xml  
-- Use single quotation marks.  
SET @x = '<root a=''1'' />'  
SELECT @x  
GO  

두 쿼리 모두 = <root a="1" />을 반환합니다.Both queries return = <root a="1" />.

네임스페이스 접두사Namespace Prefixes

네임스페이스 접두사는 유지되지 않습니다.Namespace prefixes are not preserved. xml 유형의 열에 대해 XQuery를 지정하는 경우 직렬화된 XML 결과는 다른 네임스페이스 접두사를 반환할 수 있습니다.When you specify XQuery against an xml type column, the serialized XML result may return different namespace prefixes.

DECLARE @x xml  
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">  
            <ns2:SomeElement/>  
          </ns1:root>'  
SELECT @x  
SELECT @x.query('/*')  
GO  

결과의 네임스페이스 접두사는 다를 수 있습니다.The namespace prefix in the result may be different. 예를 들어For example:

<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>  

필수 쿼리 옵션 설정 Setting Required Query Options

xml 데이터 형식 메서드를 사용하여 xml 유형의 열 또는 변수를 쿼리할 때는 다음 옵션을 표시된 것과 같이 설정해야 합니다.When querying xml type columns or variables using xml data type methods, the following options must be set as shown.

SET 옵션SET Options 필요한 값Required Values
ANSI_NULLSANSI_NULLS ONON
ANSI_PADDINGANSI_PADDING ONON
ANSI_WARNINGSANSI_WARNINGS ONON
ARITHABORTARITHABORT ONON
CONCAT_NULL_YIELDS_NULLCONCAT_NULL_YIELDS_NULL ONON
NUMERIC_ROUNDABORTNUMERIC_ROUNDABORT OFFOFF
QUOTED_IDENTIFIERQUOTED_IDENTIFIER ONON

옵션이 표시된 대로 설정되어 있지 않으면 xml 데이터 형식의 메서드에 있는 쿼리 및 수정 작업이 실패합니다.If the options are not set as shown, queries and modifications on xml data type methods will fail.

참고 항목See Also

XML 데이터 인스턴스 만들기Create Instances of XML Data