- 카테고리:
반정형 및 정형 데이터 함수 (추출)
JSON_EXTRACT_PATH_TEXT¶
첫 번째 인자를 JSON 문자열로 구문 분석하고 두 번째 인자의 경로가 가리키는 요소의 값을 반환합니다. 이는 TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))
와 동일합니다.
구문¶
JSON_EXTRACT_PATH_TEXT( <column_identifier> , '<path_name>' )
인자¶
column_identifier
추출하려는 데이터가 있는 열의 이름입니다.
path_name
추출하려는 요소의 경로를 포함하는 문자열입니다.
반환¶
반환된 값의 데이터 타입은 VARCHAR 입니다.
사용법 노트¶
경로 이름이 어떤 요소에도 해당하지 않는 경우, 함수는 NULL을 반환합니다.
경로 이름 구문은 표준 JavaScript 표기법입니다. 마침표(예:
.
)와 인덱스 연산자(예:[<인덱스>]
)가 앞에 오는 필드 이름(식별자)의 연결로 구성됩니다.첫 번째 필드 이름에는 선행 마침표를 지정할 필요가 없습니다.
인덱스 연산자의 인덱스 값은 음수가 아닌 정수(배열의 경우)이거나, 작은따옴표 또는 큰따옴표로 묶인 문자열 리터럴(오브젝트 필드의 경우)일 수 있습니다.
자세한 내용은 반정형 데이터 쿼리하기 섹션을 참조하십시오.
구문 일관성을 유지하기 위해 경로 표기법은 SQL 스타일의 큰따옴표로 묶인 식별자도 지원하며 경로 구분자로서의
:
사용도 지원합니다.
예¶
테이블을 만들고 값을 삽입합니다.
CREATE TABLE demo1 (id INTEGER, json_data VARCHAR); INSERT INTO demo1 SELECT 1, '{"level_1_key": "level_1_value"}'; INSERT INTO demo1 SELECT 2, '{"level_1_key": {"level_2_key": "level_2_value"}}'; INSERT INTO demo1 SELECT 3, '{"level_1_key": {"level_2_key": ["zero", "one", "two"]}}';
JSON_EXTRACT_PATH_TEXT를 사용하여 간단한 1수준 문자열에서 값을 추출합니다.
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +--------------------------------------+--------------------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |--------------------------------------+--------------------------------------| | level_1_value | level_1_value | | {"level_2_key":"level_2_value"} | {"level_2_key":"level_2_value"} | | {"level_2_key":["zero","one","two"]} | {"level_2_key":["zero","one","two"]} | +--------------------------------------+--------------------------------------+
JSON_EXTRACT_PATH_TEXT를 사용하여 2수준 경로를 사용하는 2수준 문자열에서 값을 추출합니다.
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +----------------------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |----------------------+------------------------| | NULL | NULL | | level_2_value | level_2_value | | ["zero","one","two"] | ["zero","one","two"] | +----------------------+------------------------+
이 예는 배열을 포함합니다.
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key[1]')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key[1]') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +---------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |---------+------------------------| | NULL | NULL | | NULL | NULL | | one | one | +---------+------------------------+