- 카테고리:
- 변환 함수 , 반정형 및 정형 데이터 함수 (캐스트) 
TO_XML¶
VARIANT 를 XML 표시를 포함한 VARCHAR 로 변환합니다. 입력이 NULL이면 결과도 NULL입니다.
구문¶
TO_XML( <expression> )
인자¶
- expression
- VARIANT로 평가되거나 VARIANT로 캐스팅 될 수 있는 식입니다. 
반환¶
반환된 값의 데이터 타입은 VARCHAR 입니다.
사용법 노트¶
- 이 함수의 일반적인 용도는 다음과 같습니다. - 원래 삽입된 XML 형식의 값과 일치하는 XML 형식의 값을 포함한 문자열 생성. 
- 반정형 값(원래 XML 형식일 필요는 없음)을 XML 형식의 값으로 변환합니다. 예를 들어, TO_XML을 사용하여 원래 JSON으로 형식이 지정된 값의 XML 호환 표시를 생성할 수 있습니다. 
 
- 입력 - expression이 VARIANT 로 평가되지 않는 경우, Snowflake는 식의 결과를 암시적으로 VARIANT 로 형변환합니다. 다른 모든 Snowflake 데이터 타입은 VARIANT로 캐스트될 수 있으므로, 이는 임의의 데이터 타입의 값을 TO_XML로 전달하고 XML 형식의 문자열로 변환할 수 있다는 의미입니다. (GEOGRAPHY 데이터 타입은 부분적 예외로, GEOGRAPHY 타입의 값으로 TO_XML을 호출하려면 GEOGRAPHY 값을 VARIANT로 명시적으로 캐스트해야 합니다.)
- 값이 XML 로 시작되지 않은 경우에는 Snowflake가 XML 호환 태그를 생성합니다. 이러한 태그는 - type특성을 사용하여 태그 콘텐츠의 Snowflake 데이터 타입을 지정할 수도 있습니다. 아래에 Snowflake에서 생성된 태그의 예가 나와 있습니다.- 가장 바깥쪽 태그 페어는 다음과 비슷합니다. - <SnowflakeData type="OBJECT"> </SnowflakeData> - 태그의 - type특성에 지정된 데이터 타입은 다를 수 있습니다.- OBJECT의 경우, 각 키-값 페어의 태그는 키를 기반으로 합니다. 예: - <key1 type="VARCHAR">value1</key1> - ARRAY의 경우 배열의 각 요소는 다음과 유사한 태그 페어에 있습니다. - <e type="VARCHAR"> </e> - 다음은 두 개의 키-값 페어를 포함하는 간단한 OBJECT에 대한 XML의 완전한 예입니다. - <SnowflakeData type="OBJECT"> <key1 type="VARCHAR">value1</key1> <key2 type="VARCHAR">value2</key2> </SnowflakeData> - 다음은 두 개의 VARCHAR 값을 포함하는 간단한 ARRAY에 대한 XML의 완전한 예입니다. - <SnowflakeData type="ARRAY"> <e type="VARCHAR">v1</e> <e type="VARCHAR">v2</e> </SnowflakeData> 
예¶
이 예에서는 PARSE_XML 을 호출하여 XML 형식의 데이터를 OBJECT에 로딩한 경우 이 함수를 사용하는 방법을 보여줍니다.
테이블을 만들고 데이터를 삽입합니다.
CREATE OR REPLACE TABLE xml_02 (x OBJECT);
INSERT INTO xml_02 (x)
  SELECT PARSE_XML('<note> <body>Sample XML</body> </note>');
TO_XML 및 TO_VARCHAR 함수를 호출합니다.
SELECT x, TO_VARCHAR(x), TO_XML(x) FROM xml_02;
+---------------------------+--------------------------------------+--------------------------------------+
| X                         | TO_VARCHAR(X)                        | TO_XML(X)                            |
|---------------------------+--------------------------------------+--------------------------------------|
| <note>                    | <note><body>Sample XML</body></note> | <note><body>Sample XML</body></note> |
|   <body>Sample XML</body> |                                      |                                      |
| </note>                   |                                      |                                      |
+---------------------------+--------------------------------------+--------------------------------------+
아래 예에서 볼 수 있듯이, XML 형식의 데이터로 시작되지 않은 데이터로 TO_XML 함수를 호출할 수도 있습니다.
다음은 간단한 OBJECT 를 만든 다음, 그에 상응하는 XML 을 생성하는 예입니다. XML 출력은 키-값 페어에 있는 값의 데이터 타입뿐 아니라, 전체 값(OBJECT)의 데이터 타입에 대한 정보를 포함합니다.
CREATE OR REPLACE TABLE xml_03 (object_col_1 OBJECT);
INSERT INTO xml_03 (object_col_1)
  SELECT OBJECT_CONSTRUCT('key1', 'value1', 'key2', 'value2');
SELECT object_col_1, TO_XML(object_col_1)
  FROM xml_03;
+---------------------+-------------------------------------------------------------------------------------------------------------------+
| OBJECT_COL_1        | TO_XML(OBJECT_COL_1)                                                                                              |
|---------------------+-------------------------------------------------------------------------------------------------------------------|
| {                   | <SnowflakeData type="OBJECT"><key1 type="VARCHAR">value1</key1><key2 type="VARCHAR">value2</key2></SnowflakeData> |
|   "key1": "value1", |                                                                                                                   |
|   "key2": "value2"  |                                                                                                                   |
| }                   |                                                                                                                   |
+---------------------+-------------------------------------------------------------------------------------------------------------------+
다음은 간단한 ARRAY 를 만든 다음, 그에 상응하는 XML 을 생성하는 예입니다. 출력은 XML 배열 요소의 데이터 타입뿐 아니라, 전체 값(ARRAY)의 데이터 타입에 대한 정보를 포함합니다.
CREATE OR REPLACE TABLE xml_04 (array_col_1 ARRAY);
INSERT INTO xml_04 (array_col_1)
  SELECT ARRAY_CONSTRUCT('v1', 'v2');
SELECT array_col_1, TO_XML(array_col_1)
  FROM xml_04;
+-------------+----------------------------------------------------------------------------------------------+
| ARRAY_COL_1 | TO_XML(ARRAY_COL_1)                                                                          |
|-------------+----------------------------------------------------------------------------------------------|
| [           | <SnowflakeData type="ARRAY"><e type="VARCHAR">v1</e><e type="VARCHAR">v2</e></SnowflakeData> |
|   "v1",     |                                                                                              |
|   "v2"      |                                                                                              |
| ]           |                                                                                              |
+-------------+----------------------------------------------------------------------------------------------+
다음 예에서는 JSON 형식의 데이터를 삽입한 다음 그에 상응하는 XML 을 생성합니다.
CREATE OR REPLACE TABLE xml_05 (json_col_1 VARIANT);
INSERT INTO xml_05 (json_col_1)
  SELECT PARSE_JSON(' { "key1": ["a1", "a2"] } ');
SELECT json_col_1,
       TO_JSON(json_col_1),
       TO_XML(json_col_1)
  FROM xml_05;
+-------------+----------------------+-------------------------------------------------------------------------------------------------------------------------+
| JSON_COL_1  | TO_JSON(JSON_COL_1)  | TO_XML(JSON_COL_1)                                                                                                      |
|-------------+----------------------+-------------------------------------------------------------------------------------------------------------------------|
| {           | {"key1":["a1","a2"]} | <SnowflakeData type="OBJECT"><key1 type="ARRAY"><e type="VARCHAR">a1</e><e type="VARCHAR">a2</e></key1></SnowflakeData> |
|   "key1": [ |                      |                                                                                                                         |
|     "a1",   |                      |                                                                                                                         |
|     "a2"    |                      |                                                                                                                         |
|   ]         |                      |                                                                                                                         |
| }           |                      |                                                                                                                         |
+-------------+----------------------+-------------------------------------------------------------------------------------------------------------------------+