- 카테고리:
반정형 데이터 함수 (구문 분석)
PARSE_XML¶
입력 문자열을 XML 문서로 해석하여 OBJECT 값을 생성합니다. 입력이 NULL이면 출력은 NULL입니다.
- 참고 항목:
구문¶
PARSE_XML( <string_containing_xml> [ , <disable_auto_convert> ] )
인자¶
필수:
string_containing_xml
이 식은 VARCHAR로 평가되어야 합니다. VARCHAR에는 유효한 XML이 포함되어야 합니다.
선택 사항:
disable_auto_convert
함수가
string_containing_xml
의 숫자 값과 부울 값을 Snowflake 데이터 타입으로 변환해야 하는지 여부를 지정하는 부울 식. (이 변환에 대한 자세한 내용은 아래 사용법 노트 를 참조하십시오.)함수가 이러한 값을 변환하지 않도록 하려면 이를
TRUE
로 설정하십시오. 이것은 CREATE FILE FORMAT 의DISABLE_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> | +-------------------------------------+-------------------------------------------+