Tipos de funções JSON
simpleJSON*(visitParam*), feito para fazer o analisar de um subconjunto limitado de JSON com extrema rapidez.JSONExtract*, feito para fazer o analisar de JSON comum.
funções simpleJSON (visitParam)
- O nome do campo (argumento da função) deve ser uma constante.
- O nome do campo deve estar codificado de forma canônica no JSON. Por exemplo:
simpleJSONHas('{"abc":"def"}', 'abc') = 1, massimpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 - Os campos são procurados em qualquer nível de aninhamento, sem distinção. Se houver vários campos correspondentes, a primeira ocorrência será usada.
- O JSON não contém caracteres de espaço fora de literais de string.
Funções JSONExtract
Funções JSONExtract sem distinção entre maiúsculas e minúsculas
Essas funções podem ter desempenho inferior ao das equivalentes com distinção entre maiúsculas e minúsculas, portanto, use as funções JSONExtract regulares, se possível.
JSONAllPaths
json— coluna JSON.JSON
Array(String)
Exemplos
Exemplo de uso
Query
Response
JSONAllPathsWithTypes
json— coluna JSON.JSON
Map(String, String)
Exemplos
Exemplo de uso
Query
Response
JSONAllValues
json— coluna JSON.JSON
Array(String)
Exemplos
Exemplo de uso
Query
Response
JSONArrayLength
NULL se a string JSON de entrada for inválida.
Sintaxe
JSON_ARRAY_LENGTH
Argumentos
json— String com JSON válido.String
json for uma string JSON que representa um array válido; caso contrário, retorna NULL. Nullable(UInt64)
Exemplos
Exemplo de uso
Query
Response
JSONDynamicPaths
json— coluna JSON.JSON
Array(String)
Exemplos
Exemplo de uso
Query
Response
JSONDynamicPathsWithTypes
json— coluna JSON.JSON
Map(String, String)
Exemplos
Exemplo de uso
Query
Response
JSONExtract
json— String JSON a ser processada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*return_type— Tipo de dados do ClickHouse a ser retornado.String
Query
Response
JSONExtractArrayRaw
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
Array(String)
Exemplos
Exemplo de uso
Query
Response
JSONExtractArrayRawCaseInsensitive
JSONExtractArrayRaw.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar no array. As chaves não distinguem entre maiúsculas e minúsculasStringou(U)Int*
Array(String)
Exemplos
básico
Query
Response
JSONExtractBool
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
0. Bool
Exemplos
Exemplo de uso
Query
Response
JSONExtractBoolCaseInsensitive
JSONExtractBool.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência sem diferenciar maiúsculas de minúsculasStringou(U)Int*
UInt8
Exemplos
básico
Query
Response
JSONExtractCaseInsensitive
JSONExtract.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência que não distingue entre maiúsculas e minúsculasStringou(U)Int*return_type— O tipo de dado do ClickHouse a ser extraídoString
Any
Exemplos
int_type
Query
Response
Query
Response
JSONExtractFloat
json— Uma string JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
0. Float64
Exemplos
Exemplo de uso
Query
Response
JSONExtractFloatCaseInsensitive
JSONExtractFloat.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência sem distinção entre maiúsculas e minúsculasStringou(U)Int*
Float64
Exemplos
básico
Query
Response
JSONExtractInt
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
0. Int64
Exemplos
Exemplo de uso
Query
Response
JSONExtractIntCaseInsensitive
JSONExtractInt.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência que não distingue entre maiúsculas e minúsculasStringou(U)Int*
Int64
Exemplos
básico
Query
Response
Query
Response
JSONExtractKeys
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
Array(String)
Exemplos
Exemplo de uso
Query
Response
JSONExtractKeysAndValues
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*value_type— Tipo de dado ClickHouse dos valores.String
Array(Tuple(String, value_type))
Exemplos
Exemplo de uso
Query
Response
JSONExtractKeysAndValuesCaseInsensitive
JSONExtractKeysAndValues.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o objeto. As chaves usam correspondência sem distinção entre maiúsculas e minúsculasStringou(U)Int*value_type— O tipo de dado do ClickHouse para os valoresString
Array(Tuple(String, T))
Exemplos
básico
Query
Response
JSONExtractKeysAndValuesRaw
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
Array(Tuple(String, String))
Exemplos
Exemplo de uso
Query
Response
JSONExtractKeysAndValuesRawCaseInsensitive
JSONExtractKeysAndValuesRaw.
Sintaxe
json— String JSON a ser processadaStringindices_or_keys— Opcional. Índices ou chaves para navegar no objeto. As chaves usam correspondência sem diferenciar maiúsculas de minúsculasStringou(U)Int*
Array(Tuple(String, String))
Exemplos
básico
Query
Response
JSONExtractKeysCaseInsensitive
JSONExtractKeys.
Sintaxe
json— string JSON a ser processadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o objeto. As chaves usam correspondência que não diferencia maiúsculas de minúsculasStringou(U)Int*
Array(String)
Exemplos
básico
Query
Response
Query
Response
JSONExtractRaw
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
String
Exemplos
Exemplo de uso
Query
Response
JSONExtractRawCaseInsensitive
JSONExtractRaw.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência sem diferenciar maiúsculas de minúsculasStringou(U)Int*
String
Exemplos
objeto
Query
Response
JSONExtractString
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista de zero ou mais argumentos, cada um deles podendo ser uma string ou um inteiro.Stringou(U)Int*
String
Exemplos
Exemplo de uso
Query
Response
JSONExtractStringCaseInsensitive
JSONExtractString.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência sem diferenciar maiúsculas de minúsculasStringou(U)Int*
String
Exemplos
básico
Query
Response
Query
Response
JSONExtractUInt
json— String JSON a ser analisada.Stringindices_or_keys— Uma lista com zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int*
0. UInt64
Exemplos
Exemplo de uso
Query
Response
JSONExtractUIntCaseInsensitive
JSONExtractUInt.
Sintaxe
json— String JSON a ser analisadaStringindices_or_keys— Opcional. Índices ou chaves para navegar até o campo. As chaves usam correspondência sem diferenciar maiúsculas de minúsculasStringou(U)Int*
UInt64
Exemplos
básico
Query
Response
JSONHas
json— String JSON a ser analisadaString[ ,indices_or_keys, ...]— Uma lista de zero ou mais argumentos.Stringou(U)Int*
1 se o valor existir em json; caso contrário, 0 UInt8
Exemplos
Exemplo de uso
Query
Response
JSONKey
json— String JSON a ser analisada.Stringindices_or_keys— Lista opcional de índices ou chaves que especifica um caminho para um elemento aninhado. Cada argumento pode ser uma string (acesso por chave) ou um inteiro (acesso por índice, começando em 1).StringouInt*
String
Exemplos
Exemplo de uso
Query
Response
JSONLength
0 será retornado.
Sintaxe
json— String JSON a ser analisadaString[, indices_or_keys, ...]— Opcional. Uma lista de zero ou mais argumentos.Stringou(U)Int8/16/32/64
0 se o valor não existir ou for do tipo incorreto. UInt64
Exemplos
Exemplo de uso
Query
Response
JSONMergePatch
jsonMergePatch
Argumentos
json1[, json2, ...]— Uma ou mais strings contendo JSON válido.String
String
Exemplos
Exemplo de uso
Query
Response
json— coluna JSON.JSON
Array(String)
Exemplos
Exemplo de uso
Query
Response
json— coluna JSON.JSON
Map(String, String)
Exemplos
Exemplo de uso
Query
Response
JSONType
Null=0 será retornado.
Sintaxe
json— String JSON a ser analisadaStringjson[, indices_or_keys, ...]— Uma lista de zero ou mais argumentos, cada um dos quais pode ser uma string ou um inteiro.Stringou(U)Int8/16/32/64
Null=0 Enum
Exemplos
Exemplo de uso
Query
Response
JSON_EXISTS
1 será retornado.
Se o valor não existir, 0 será retornado.
Sintaxe
1 se o valor existir no documento JSON; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
Query
Response
JSON_QUERY
String
Exemplos
Exemplo de uso
Query
Response
JSON_VALUE
- com SET
function_json_value_return_type_allow_nullable=true,NULLserá retornado. Se o valor for de tipo complexo (como: struct, array, map), uma string vazia será retornada por padrão. - com SET
function_json_value_return_type_allow_complex=true, o valor complexo será retornado.
String
Exemplos
Exemplo de uso
Query
Response
dynamicElement
Dynamic uma coluna do tipo especificado.
Esta função permite extrair valores de um tipo específico de uma coluna Dynamic. Se uma linha contiver um valor
do tipo solicitado, ela retornará esse valor. Se a linha contiver um tipo diferente ou NULL, ela retornará NULL
para tipos escalares ou um array vazio para tipos de array.
Sintaxe
dynamic— Coluna Dynamic da qual será feita a extração.Dynamictype_name— O nome do tipo de variante a ser extraído (por exemplo, ‘String’, ‘Int64’, ‘Array(Int64)’).
Any
Exemplos
Extração de diferentes tipos da coluna Dynamic
Query
Response
dynamicType
Dynamic.
Para linhas que contêm NULL, a função retorna ‘None’. Para todas as outras linhas, retorna o tipo de dado real
armazenado naquela linha da coluna Dynamic (por exemplo, ‘Int64’, ‘String’, ‘Array(Int64)’).
Sintaxe
dynamic— Coluna Dynamic a ser inspecionada.Dynamic
String
Exemplos
Inspecionando os tipos na coluna Dynamic
Query
Response
max_types, os valores que excedem esse limite são armazenados em um formato binário compartilhado
em vez de serem separados em subcolunas tipadas individuais. Esta função identifica quais linhas são armazenadas nesse formato compartilhado.
Sintaxe
dynamic— coluna do tipo Dynamic a ser inspecionada.Dynamic
Bool
Exemplos
Verificando o formato de armazenamento em uma coluna Dynamic com o limite de max_types
Query
Response
isValidJSON
json— string JSON a ser validadaString
1 se a string for um JSON válido; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
Query
Response
Query
Response
prettyPrintJSON
json— Uma string JSON válida para formatar.Stringindent— Número de espaços por nível de indentação. Padrão: 4. Máx.: 32UInt*
String
Exemplos
Objeto simples
Query
Response
Query
Response
simpleJSONExtractBool
field_name.
O resultado é UInt8.
Sintaxe
visitParamExtractBool
Argumentos
json— O JSON em que o campo será procurado.Stringfield_name— O nome do campo a ser procurado.const String
1 se o valor do campo for true; caso contrário, retorna 0. Isso significa que esta função retornará 0, inclusive — e não apenas — nos seguintes casos:
- Se o campo não existir.
- Se o campo contiver
truecomo string, por exemplo:{"field":"true"}. - Se o campo contiver
1como valor numérico.UInt8
Query
Response
simpleJSONExtractFloat
Float64 a partir do valor do campo chamado field_name.
Se field_name for um campo do tipo string, ele tentará analisar um número a partir do início da string.
Se o campo não existir, ou existir mas não contiver um número, retorna 0.
Sintaxe
visitParamExtractFloat
Argumentos
json— O JSON no qual o campo é procurado.Stringfield_name— O nome do campo a ser procurado.const String
0. Float64
Exemplos
Exemplo de uso
Query
Response
simpleJSONExtractInt
Int64 do valor do campo chamado field_name.
Se field_name for um campo do tipo string, tenta interpretar um número a partir do início da string.
Se o campo não existir, ou existir mas não contiver um número, retorna 0.
Sintaxe
visitParamExtractInt
Argumentos
json— O JSON no qual o campo é procurado.Stringfield_name— O nome do campo a ser procurado.const String
0 Int64
Exemplos
Exemplo de uso
Query
Response
simpleJSONExtractRaw
field_name como uma String, incluindo os separadores.
Sintaxe
visitParamExtractRaw
Argumentos
json— O JSON no qual o campo é procurado.Stringfield_name— O nome do campo a ser procurado.const String
String
Exemplos
Exemplo de uso
Query
Response
simpleJSONExtractString
String entre aspas duplas do valor do campo chamado field_name.
Detalhes de implementação
No momento, não há suporte a pontos de código no formato \uXXXX\uYYYY que não pertençam ao plano multilíngue básico (eles são convertidos para CESU-8 em vez de UTF-8).
Sintaxe
visitParamExtractString
Argumentos
json— O JSON no qual o campo é pesquisado.Stringfield_name— O nome do campo a ser pesquisado.const String
String
Exemplos
Exemplo de uso
Query
Response
simpleJSONExtractUInt
UInt64 do valor do campo chamado field_name.
Se field_name for um campo do tipo String, tenta analisar um número a partir do início da string.
Se o campo não existir, ou existir mas não contiver um número, retorna 0.
Sintaxe
visitParamExtractUInt
Argumentos
json— O JSON no qual o campo é pesquisado.Stringfield_name— O nome do campo a ser pesquisado.const String
0 UInt64
Exemplos
Exemplo de uso
Query
Response
simpleJSONHas
field_name.
Sintaxe
visitParamHas
Argumentos
json— O JSON em que o campo é pesquisado.Stringfield_name— O nome do campo a ser pesquisado.const String
1 se o campo existir; caso contrário, 0 UInt8
Exemplos
Exemplo de uso
Query
Response
toJSONString
UInt64 ou Int128) são colocados entre aspas por padrão. output_format_json_quote_64bit_integers controla esse comportamento.
Os valores especiais NaN e inf são substituídos por null. Habilite a configuração output_format_json_quote_denormals para exibi-los.
Ao serializar um valor Enum, a função retorna seu nome.
Veja também:
Sintaxe
value— Valor a ser serializado. O valor pode ser de qualquer tipo de dado.Any
String
Exemplos
Serialização de map
Query
Response
Query
Response