카테고리:

반정형 데이터 함수 (구문 분석)

PARSE_XML

입력 문자열을 XML 문서로 해석하여 OBJECT 값을 생성합니다. 입력이 NULL이면 출력은 NULL입니다.

참고 항목:

CHECK_XML

구문

PARSE_XML( <string_containing_xml> [ , <disable_auto_convert> ] )

인자

필수:

string_containing_xml

이 식은 VARCHAR로 평가되어야 합니다. VARCHAR에는 유효한 XML이 포함되어야 합니다.

선택 사항:

disable_auto_convert

함수가 string_containing_xml 의 숫자 값과 부울 값을 Snowflake 데이터 타입으로 변환해야 하는지 여부를 지정하는 부울 식. (이 변환에 대한 자세한 내용은 아래 사용법 노트 를 참조하십시오.)

  • 함수가 이러한 값을 변환하지 않도록 하려면 이를 TRUE 로 설정하십시오. 이것은 CREATE FILE FORMATDISABLE_AUTO_CONVERT 매개 변수와 유사한 효과를 갖습니다.

  • 함수가 이러한 값을 변환하도록 하려면 이를 FALSE 로 설정하거나 이 인자를 생략하십시오.

기본값: FALSE

반환

반환된 값의 데이터 타입은 OBJECT입니다. OBJECT에는 XML의 내부 표시가 포함됩니다.

사용법 노트

  • XML 문서의 모든 요소의 내용은 텍스트입니다. PARSE_XML은 일부 XML 데이터를 텍스트에서 기본(Snowflake SQL) 데이터 타입 으로 변환하려고 시도합니다.

    • NUMERIC 및 BOOLEAN:

      PARSE_XML은 명백한 숫자 및 부울 값을 다시 출력하여 텍스트 측면에서 동일한 결과를 생성하는 방식으로 이러한 값을 기본 표현으로 변환하려고 시도합니다. 예를 들어, 십진수를 구문 분석할 때 PARSE_XML은 123.45를 DOUBLE이 아닌 NUMBER(5,2)로 처리하여 표현의 정확성을 유지하려고 시도합니다. 하지만:

      • 과학적 표기법의 숫자(즉, 1.2345e+02)나, 범위 또는 스케일 제한으로 인해 고정 소수점 10진수로 저장할 수 없는 숫자는 DOUBLE로 저장됩니다.

      • XML 요소의 내용이 소수점 이하 자릿수가 있는 숫자인 경우 PARSE_XML은 후행 0을 자를 수 있습니다.

      함수가 이 변환을 수행하지 않도록 하려면 disable_auto_convert 인자에 대해 TRUE 를 전달하십시오.

    • TIMESTAMP, DATE, TIME, BINARY:

      XML은 기본적으로 TIMESTAMP, DATE, TIME 또는 BINARY와 같은 값을 나타내지 않기 때문에 XML에서 문자열로 표현되어야 합니다. PARSE_XML은 이러한 값을 자동으로 인식하지 않습니다. 이들은 문자열로 유지되므로 사용자는 필요한 경우 문자열의 값을 기본 SQL 데이터 타입으로 변환해야 합니다.

  • XML 속성은 이름/값 쌍의 정렬되지 않은 컬렉션입니다. PARSE_XML 함수가 반드시 순서를 보존하는 것은 아닙니다. 예를 들어, 텍스트를 XML로 변환했다가 다시 텍스트로 변환하는 경우, 원래 정보가 순서가 바뀐 채 포함된 문자열이 생성될 수 있습니다.

  • 문자열에서 XML로 변환할 때 요소 사이의 공백이 변경되는 것을 볼 수 있습니다.

다음 예제에서는 PARSE_XML 함수를 사용하여 XML의 문자열을 OBJECT 열에 삽입할 수 있는 OBJECT로 변환하는 방법을 보여줍니다.

CREATE TABLE xtab (v OBJECT);

INSERT INTO xtab SELECT PARSE_XML(column1) AS v
  FROM VALUES ('<a/>'), ('<a attr="123">text</a>'), ('<a><b>X</b><b>Y</b></a>');

SELECT * FROM xtab;

+-------------------------+
|           V             |
+-------------------------+
| <a></a>                 |
| <a attr="123">text</a>  |
| <a><b>X</b><b>Y</b></a> |
+-------------------------+

다음 예제에서는 숫자 값 변환의 사용과 비활성화 사이의 차이점을 보여줍니다. 이 예제에서는 변환이 비활성화되지 않을 때 함수가 과학 표기법의 숫자를 DOUBLE로 해석합니다.

SELECT PARSE_XML('<test>22257e111</test>'), PARSE_XML('<test>22257e111</test>', TRUE);

+-------------------------------------+-------------------------------------------+
| PARSE_XML('<TEST>22257E111</TEST>') | PARSE_XML('<TEST>22257E111</TEST>', TRUE) |
|-------------------------------------+-------------------------------------------|
| <test>2.225700000000000e+115</test> | <test>22257e111</test>                    |
+-------------------------------------+-------------------------------------------+
맨 위로 이동