- 카테고리:
반정형 데이터 함수 (추출)
JSON_EXTRACT_PATH_TEXT¶
첫 번째 인자를 JSON 문자열로 구문 분석하고 두 번째 인자의 경로가 가리키는 요소의 값을 반환합니다. 이는 TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))
와 동일합니다.
구문¶
JSON_EXTRACT_PATH_TEXT( <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 | +---------+------------------------+