JSON 함수의 유형
- 매우 제한된 JSON 부분 집합을 매우 빠르게 파싱하도록 설계된
simpleJSON*(visitParam*) - 일반적인 JSON을 파싱하도록 설계된
JSONExtract*
simpleJSON (visitParam) 함수
- 필드 이름(함수 인수)은 상수여야 합니다.
- 필드 이름은 JSON에서 일종의 정규화된 형식으로 인코딩되어 있어야 합니다. 예를 들어
simpleJSONHas('{"abc":"def"}', 'abc') = 1이지만,simpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0입니다. - 필드는 중첩 수준과 관계없이 모든 레벨에서 구분 없이 검색됩니다. 일치하는 필드가 여러 개 있으면 첫 번째 항목이 사용됩니다.
- JSON에는 문자열 리터럴 밖에 공백 문자가 없습니다.
JSONExtract 함수
대소문자를 구분하지 않는 JSONExtract 함수
이 함수들은 대소문자를 구분하는 대응 함수보다 성능이 떨어질 수 있으므로, 가능하면 일반 JSONExtract 함수를 사용하십시오.
JSONAllPaths
json— JSON 컬럼.JSON
Array(String)
예시
사용 예시
Query
Response
JSONAllPathsWithTypes
json— JSON 컬럼.JSON
Map(String, String)
예시
사용 예시
Query
Response
JSONAllValues
json— JSON 컬럼.JSON
Array(String)
예시
사용 예시
Query
Response
JSONArrayLength
NULL을 반환합니다.
구문
JSON_ARRAY_LENGTH
인수
json— 유효한 JSON 문자열입니다.String
json이 유효한 JSON 배열 문자열이면 배열의 요소 수를 반환하고, 그렇지 않으면 NULL을 반환합니다. Nullable(UInt64)
예시
사용 예시
Query
Response
JSONDynamicPaths
json— JSON 컬럼.JSON
Array(String)
예시
사용 예시
Query
Response
JSONDynamicPathsWithTypes
json— JSON 컬럼.JSON
Map(String, String)
예시
사용 예시
Query
Response
JSONExtract
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 0개 이상의 인수로 이루어진 목록이며, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int*return_type— 반환할 ClickHouse 데이터 타입입니다.String
Query
Response
JSONExtractArrayRaw
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각각 문자열 또는 정수일 수 있는 인수 0개 이상으로 이루어진 목록입니다.String또는(U)Int*
Array(String)
예시
사용 예시
Query
Response
JSONExtractArrayRawCaseInsensitive
JSONExtractArrayRaw와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 배열을 탐색하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
Array(String)
예시
기본
Query
Response
JSONExtractBool
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각 항목이 문자열 또는 정수일 수 있는 인수 목록이며, 0개 이상 지정할 수 있습니다.String또는(U)Int*
0을 반환합니다. Bool
예시
사용 예시
Query
Response
JSONExtractBoolCaseInsensitive
JSONExtractBool와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드로 이동하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다.String또는(U)Int*
UInt8
예시
기본
Query
Response
JSONExtractCaseInsensitive
JSONExtract와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드로 이동하는 데 사용할 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*return_type— 추출할 ClickHouse 데이터 타입String
Any
예시
int_type
Query
Response
Query
Response
JSONExtractFloat
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 0개 이상의 인수로 이루어진 목록이며, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int*
0을 반환합니다. Float64
예시
사용 예시
Query
Response
JSONExtractFloatCaseInsensitive
JSONExtractFloat와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드로 이동하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다.String또는(U)Int*
Float64
예시
기본
Query
Response
JSONExtractInt
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각 항목이 문자열 또는 정수일 수 있는 0개 이상의 인수 목록입니다.String또는(U)Int*
0을 반환합니다. Int64
예시
사용 예시
Query
Response
JSONExtractIntCaseInsensitive
JSONExtractInt와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드에 접근하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
Int64
예시
기본
Query
Response
Query
Response
JSONExtractKeys
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 0개 이상의 인수로 이루어진 목록이며, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int*
Array(String)
예시
사용 예시
Query
Response
JSONExtractKeysAndValues
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각 인수는 문자열 또는 정수일 수 있으며, 이러한 인수를 0개 이상 나열한 목록입니다.String또는(U)Int*value_type— 값의 ClickHouse 데이터 타입입니다.String
Array(Tuple(String, value_type))
예시
사용 예시
Query
Response
JSONExtractKeysAndValuesCaseInsensitive
JSONExtractKeysAndValues와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 객체까지 탐색하는 데 사용할 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*value_type— 값의 ClickHouse 데이터 타입입니다String
Array(Tuple(String, T))
예시
기본
Query
Response
JSONExtractKeysAndValuesRaw
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각 항목이 문자열 또는 정수일 수 있는 0개 이상의 인수 목록입니다.String또는(U)Int*
Array(Tuple(String, String))
예시
사용 예시
Query
Response
JSONExtractKeysAndValuesRawCaseInsensitive
JSONExtractKeysAndValuesRaw와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 객체 내부를 탐색하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
Array(Tuple(String, String))
예시
기본
Query
Response
JSONExtractKeysCaseInsensitive
JSONExtractKeys와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 객체로 탐색하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
Array(String)
예시
기본
Query
Response
Query
Response
JSONExtractRaw
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 0개 이상의 인수로 이루어진 목록이며, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int*
String
예시
사용 예시
Query
Response
JSONExtractRawCaseInsensitive
JSONExtractRaw와 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드에 접근하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치 여부를 판단합니다String또는(U)Int*
String
예시
객체
Query
Response
JSONExtractString
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 각 항목이 문자열 또는 정수일 수 있는, 0개 이상의 인수 목록입니다.String또는(U)Int*
String 값을 반환하고, 없으면 빈 문자열을 반환합니다. String
예시
사용 예시
Query
Response
JSONExtractStringCaseInsensitive
JSONExtractString과 유사합니다.
구문
json— 파싱할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드까지 이동하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
String
예시
기본
Query
Response
Query
Response
JSONExtractUInt
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 0개 이상의 인수로 이루어진 목록이며, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int*
0을 반환합니다. UInt64
예시
사용 예시
Query
Response
JSONExtractUIntCaseInsensitive
JSONExtractUInt와 유사합니다.
구문
json— parse할 JSON 문자열Stringindices_or_keys— 선택 사항입니다. 필드에 도달하기 위한 인덱스 또는 키입니다. 키는 대소문자를 구분하지 않고 일치합니다String또는(U)Int*
UInt64
예시
기본
Query
Response
JSONHas
json에 존재하면 1을, 그렇지 않으면 0을 반환합니다 UInt8
예시
사용 예시
Query
Response
JSONKey
json— 파싱할 JSON 문자열입니다.Stringindices_or_keys— 중첩된 요소에 대한 경로를 지정하는 선택적 인덱스 또는 키 목록입니다. 각 인수는 문자열(키로 액세스) 또는 정수(1부터 시작하는 인덱스로 액세스)일 수 있습니다.String또는Int*
String
예시
사용 예시
Query
Response
JSONLength
0을 반환합니다.
구문
json— 파싱할 JSON 문자열String[, indices_or_keys, ...]— 선택 사항입니다. 0개 이상의 인수로 이루어진 목록입니다.String또는(U)Int8/16/32/64
0을 반환합니다. UInt64
예시
사용 예시
Query
Response
JSONMergePatch
jsonMergePatch
인수
json1[, json2, ...]— 유효한 JSON이 담긴 하나 이상의 문자열입니다.String
String
예시
사용 예시
Query
Response
json— JSON 컬럼.JSON
Array(String)
예시
사용 예시
Query
Response
json— JSON 컬럼.JSON
Map(String, String)
예시
사용 예시
Query
Response
JSONType
Null=0을 반환합니다.
구문
json— 파싱할 JSON 문자열Stringjson[, indices_or_keys, ...]— 0개 이상의 인수 목록으로, 각 인수는 문자열 또는 정수일 수 있습니다.String또는(U)Int8/16/32/64
Null=0을 반환합니다 Enum
예시
사용 예시
Query
Response
JSON_EXISTS
1이 반환됩니다.
값이 존재하지 않으면 0이 반환됩니다.
구문
1을, 없으면 0을 반환합니다. UInt8
예시
사용 예시
Query
Response
JSON_QUERY
String
예시
사용 예시
Query
Response
JSON_VALUE
- SET
function_json_value_return_type_allow_nullable=true로 설정하면NULL이 반환됩니다. 값이 복합 유형(예: struct, 배열, 맵)인 경우에는 기본적으로 빈 문자열이 반환됩니다. - SET
function_json_value_return_type_allow_complex=true로 설정하면 복합 값이 반환됩니다.
String
예시
사용 예시
Query
Response
dynamicElement
Dynamic 컬럼에서 지정된 타입의 컬럼을 추출합니다.
이 함수는 Dynamic 컬럼에서 특정 타입의 값을 추출할 수 있습니다. 행에 요청한 타입의 값이 있으면
해당 값을 반환합니다. 행에 다른 타입의 값이나 NULL이 있으면 스칼라 타입에는 NULL을 반환하고
배열 타입에는 빈 배열을 반환합니다.
구문
dynamic— 값을 추출할 Dynamic 컬럼입니다.Dynamictype_name— 추출할 variant 타입의 이름입니다(예: ‘String’, ‘Int64’, ‘Array(Int64)’).
Any
예시
Dynamic 컬럼에서 다양한 타입 추출하기
Query
Response
dynamicType
Dynamic 컬럼의 각 행에 대한 variant 타입 이름을 반환합니다.
NULL을 포함하는 행의 경우 함수는 ‘None’을 반환합니다. 그 외의 모든 행에 대해서는 Dynamic 컬럼의 해당 행에 저장된 실제 데이터 타입을 반환합니다(예: ‘Int64’, ‘String’, ‘Array(Int64)’).
구문
dynamic— 검사할 Dynamic 컬럼입니다.Dynamic
String
예시
Dynamic 컬럼의 타입 검사
Query
Response
max_types 제한이 있으면, 이 제한을 초과하는 값은 개별 타입의 서브컬럼으로 분리되지 않고
공유 바이너리 형식으로 저장됩니다. 이 함수는 어떤 행이 이 공유 형식으로 저장되었는지 식별합니다.
구문
dynamic— 확인할 Dynamic 컬럼.Dynamic
Bool
예시
max_types 제한이 설정된 Dynamic 컬럼의 저장 포맷 확인
Query
Response
isValidJSON
json— 유효성을 검사할 JSON 문자열String
1을, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
Query
Response
Query
Response
prettyPrintJSON
String
예시
단순한 객체
Query
Response
Query
Response
simpleJSONExtractBool
field_name이라는 이름의 필드 값에서 true/false 값을 파싱합니다.
결과는 UInt8입니다.
구문
visitParamExtractBool
인수
json— 필드를 검색할 JSON입니다.Stringfield_name— 검색할 필드의 이름입니다.const String
true이면 1을 반환하고, 그렇지 않으면 0을 반환합니다. 즉, 다음과 같은 경우를 포함해(이에 국한되지 않음) 이 함수는 0을 반환합니다.
- 필드가 존재하지 않는 경우
- 필드에
true가 문자열로 포함된 경우. 예:{"field":"true"}. - 필드에 숫자 값
1이 포함된 경우.UInt8
Query
Response
simpleJSONExtractFloat
field_name이라는 이름의 필드 값에서 Float64를 파싱합니다.
field_name이 String 필드이면 문자열의 시작 부분에서 숫자를 파싱합니다.
필드가 존재하지 않거나 존재하더라도 숫자를 포함하지 않으면 0을 반환합니다.
구문
visitParamExtractFloat
인수
json— 필드를 검색할 JSON입니다.Stringfield_name— 검색할 필드 이름입니다.const String
0을 반환합니다. Float64
예시
사용 예시
Query
Response
simpleJSONExtractInt
field_name이라는 이름의 field 값에서 Int64를 파싱합니다.
field_name이 문자열 field이면 문자열의 시작 부분에서 숫자를 파싱합니다.
field가 없거나, 있더라도 숫자를 포함하지 않으면 0을 반환합니다.
구문
visitParamExtractInt
인수
json— 필드를 찾을 JSON입니다.Stringfield_name— 찾을 필드의 이름입니다.const String
0을 반환합니다. Int64
예시
사용 예시
Query
Response
simpleJSONExtractRaw
field_name이라는 이름의 필드 값을 구분자를 포함한 String으로 반환합니다.
구문
visitParamExtractRaw
인수
json— 필드를 찾을 JSON입니다.Stringfield_name— 검색할 필드 이름입니다.const String
String
예시
사용 예시
Query
Response
simpleJSONExtractString
field_name이라는 이름의 필드 값에서 큰따옴표로 둘러싸인 String을 파싱합니다.
구현 세부 사항
현재 기본 다국어 평면에 속하지 않는 \uXXXX\uYYYY 포맷의 코드 포인트는 지원하지 않습니다(UTF-8이 아니라 CESU-8로 변환됨).
구문
visitParamExtractString
인수
json— 필드를 찾을 JSON입니다.Stringfield_name— 찾을 필드의 이름입니다.const String
String
예시
사용 예시
Query
Response
simpleJSONExtractUInt
field_name이라는 이름의 필드 값에서 UInt64를 파싱합니다.
field_name이 문자열 필드이면 문자열의 시작 부분에서 숫자를 파싱합니다.
필드가 없거나 필드는 존재하지만 숫자를 포함하지 않으면 0을 반환합니다.
구문
visitParamExtractUInt
인수
json— 필드를 찾을 JSON입니다.Stringfield_name— 찾을 필드의 이름입니다.const String
0을 반환합니다. UInt64
예시
사용 예시
Query
Response
simpleJSONHas
field_name이라는 이름의 필드가 존재하는지 확인합니다.
구문
visitParamHas
인수
json— 필드를 검색할 JSON입니다.Stringfield_name— 검색할 필드 이름입니다.const String
1을 반환하고, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
Query
Response
toJSONString
UInt64, Int128 등)은 기본적으로 따옴표로 묶입니다. 이 동작은 output_format_json_quote_64bit_integers 설정으로 제어합니다.
특수 값 NaN 및 inf는 null로 대체됩니다. 이를 표시하려면 output_format_json_quote_denormals 설정을 활성화하십시오.
Enum 값을 직렬화하면 함수는 해당 이름을 출력합니다.
관련 항목:
구문
value— 직렬화할 값입니다. 값은 모든 데이터 타입이 될 수 있습니다.Any
String
예시
맵 직렬화
Query
Response
Query
Response