카테고리:

반정형 및 정형 데이터 함수 (추출)

JSON_EXTRACT_PATH_TEXT

첫 번째 인자를 JSON 문자열로 구문 분석하고 두 번째 인자의 경로가 가리키는 요소의 값을 반환합니다. 이는 TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH)) 와 동일합니다.

구문

JSON_EXTRACT_PATH_TEXT( <column_identifier> , '<path_name>' )
Copy

인자

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"]}}';
Copy

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"]} |
+--------------------------------------+--------------------------------------+
Copy

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"]   |
+----------------------+------------------------+
Copy

이 예는 배열을 포함합니다.

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                    |
+---------+------------------------+
Copy