- 카테고리:
반정형 및 정형 데이터 함수 (구문 분석)
PARSE_XML¶
입력 문자열을 XML 문서로 해석하여 OBJECT 값을 생성합니다. 입력이 NULL이면 출력은 NULL입니다.
- 참고 항목:
구문¶
PARSE_XML( <string_containing_xml> [ , <disable_auto_convert> ] )
PARSE_XML( STR => <string_containing_xml>
[ , DISABLE_AUTO_CONVERT => <disable_auto_convert> ] )
인자¶
필수:
string_containing_xml
. OR .STR => string_containing_xml
이 식은 VARCHAR로 평가되어야 합니다. VARCHAR에는 유효한 XML이 포함되어야 합니다.
선택 사항:
disable_auto_convert
. OR .DISABLE_AUTO_CONVERT => 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) 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> | +-------------------------------------+-------------------------------------------+
다음 예제에서는 이름으로 함수에 대한 인자를 지정하는 방법을 보여줍니다.
SELECT PARSE_XML(STR => '<test>22257e111</test>', DISABLE_AUTO_CONVERT => TRUE);+--------------------------------------------------------------------------+ | PARSE_XML(STR => '<TEST>22257E111</TEST>', DISABLE_AUTO_CONVERT => TRUE) | |--------------------------------------------------------------------------| | <test>22257e111</test> | +--------------------------------------------------------------------------+