JSON関数の種類
simpleJSON*(visitParam*):JSONの限られたサブセットを非常に高速にパースするための関数です。JSONExtract*:一般的なJSONをパースするための関数です。
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。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— parse する 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
例
使用例
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— 解析対象の JSON 文字列Stringindices_or_keys— 任意。フィールドまでたどるためのインデックスまたはキー。キーの照合では大文字と小文字を区別しませんStringまたは(U)Int*
0 を返します。 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 を含む文字列を1つ以上指定します。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、array、map など) の場合、デフォルトでは空文字列が返されます。 - 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
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 が文字列フィールドの場合は、文字列の先頭から数値として解釈しようとします。
フィールドが存在しない場合、または存在していても数値が含まれていない場合は、0 を返します。
構文
visitParamExtractFloat
引数
json— フィールドを検索する対象の JSON。Stringfield_name— 検索するフィールドの名前。const String
0 を返します。 Float64
例
使用例
Query
Response
simpleJSONExtractInt
field_name という名前のフィールドの値から Int64 をパースします。
field_name が文字列フィールドの場合は、文字列の先頭から数値をパースしようとします。
フィールドが存在しない場合、または存在していても数値が含まれていない場合は、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 を解析します。
実装の詳細
現在、基本多言語面 (BMP) に含まれない \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
例
Mapのシリアライゼーション
Query
Response
Query
Response