أنواع دوال 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 المُدخلة غير صالحة.
البنية
JSON_ARRAY_LENGTH
الوسيطات
json— String يحتوي على 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— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*return_type— نوع بيانات ClickHouse المراد إرجاعه.String
Query
Response
JSONExtractArrayRaw
json— سلسلة JSON نصية مطلوب تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا.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— قائمة تتضمن صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Bool إذا وُجدت، وإلا فتعيد 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— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.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— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.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— قائمة من صفر أو أكثر من الوسيطات، يمكن أن يكون كلٌّ منها سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractKeysAndValues
json— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا.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— قائمة تتكوّن من صفر أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.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— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.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— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.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— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
0. UInt64
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractUIntCaseInsensitive
JSONExtractUInt.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرفStringأو(U)Int*
UInt64
أمثلة
بسيط
Query
Response
JSONHas
json— سلسلة JSON المراد تحليلهاString[ ,indices_or_keys, ...]— قائمة تضم صفرًا أو أكثر من الوسائط.Stringأو(U)Int*
1 إذا كانت القيمة موجودة في json، وإلا فـ0 UInt8
أمثلة
مثال على الاستخدام
Query
Response
JSONKey
json— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة اختيارية بالفهرسات أو المفاتيح تحدد مسارًا إلى عنصر متداخل. يمكن أن تكون كل وسيطة إما سلسلة نصية (للوصول بالمفتاح) أو عددًا صحيحًا (للوصول بالفهرس بدءًا من 1).StringأوInt*
String
أمثلة
مثال على الاستخدام
Query
Response
JSONLength
0.
البنية
json— سلسلة JSON المراد تحليلهاString[, indices_or_keys, ...]— اختياري. قائمة تتضمن صفرًا أو أكثر من الوسائط.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, ...]— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int8/16/32/64
Null=0 Enum
أمثلة
مثال على الاستخدام
Query
Response
JSON_EXISTS
1.
إذا لم تكن القيمة موجودة، فستُعاد 0.
البنية
1 إذا كانت القيمة موجودة في مستند JSON، وإلا فيعيد 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— اسم النوع المراد استخراجه من بين الأنواع الممكنة (مثل: ‘String’ و’Int64’ و’Array(Int64)’).
Any
أمثلة
استخراج أنواع مختلفة من عمود Dynamic
Query
Response
dynamicType
Dynamic.
بالنسبة إلى الصفوف التي تحتوي على NULL، تُعيد الدالة ‘None’. أما في جميع الصفوف الأخرى، فتُعيد نوع البيانات الفعلي
المخزَّن في ذلك الصف من عمود Dynamic (على سبيل المثال: ‘Int64’ و’String’ و’Array(Int64)’).
البنية
dynamic— عمود Dynamic المطلوب فحصه.Dynamic
String
أمثلة
فحص الأنواع في عمود Dynamic
Query
Response
true للصفوف في عمود Dynamic المخزَّنة بتنسيق Variant المشترك بدلًا من تخزينها كأعمدة فرعية منفصلة.
عندما يكون لعمود Dynamic حد max_types، فإن القيم التي تتجاوز هذا الحد تُخزَّن بتنسيق ثنائي مشترك
بدلًا من فصلها إلى أعمدة فرعية منفصلة بحسب النوع. تحدد هذه الدالة الصفوف المخزَّنة بهذا التنسيق المشترك.
الصيغة
dynamic— عمود Dynamic المراد فحصه.Dynamic
true إذا كانت القيمة مخزّنة بتنسيق shared variant format، وfalse إذا كانت مخزّنة كعمود فرعي منفصل أو كانت NULL. Bool
أمثلة
التحقق من تنسيق التخزين في عمود Dynamic مع حد max_types
Query
Response
isValidJSON
json— سلسلة JSON المطلوب التحقق من صحتهاString
1 إذا كانت السلسلة JSON صالحة، وإلا 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
prettyPrintJSON
json— سلسلة JSON صالحة لتنسيقها.Stringindent— عدد المسافات لكل مستوى من الإزاحة. الافتراضي: 4. الحد الأقصى: 32UInt*
String
أمثلة
كائن بسيط
Query
Response
Query
Response
simpleJSONExtractBool
true/false من قيمة الحقل المسمّى field_name.
النتيجة هي UInt8.
البنية
visitParamExtractBool
الوسيطات
json— بيانات JSON التي يُبحث فيها عن الحقل.Stringfield_name— اسم الحقل المطلوب البحث عنه.const String
1 إذا كانت قيمة الحقل هي true، وإلا فتعيد 0. وهذا يعني أن هذه الدالة ستُعيد 0 أيضًا في الحالات التالية، وليس في هذه الحالات فقط:
- إذا كان الحقل غير موجود.
- إذا كان الحقل يحتوي على
trueكسلسلة نصية، على سبيل المثال:{"field":"true"}. - إذا كان الحقل يحتوي على
1كقيمة رقمية.UInt8
Query
Response
simpleJSONExtractFloat
Float64 من قيمة الحقل المسمّى field_name.
إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فسيُعيد 0.
الصياغة
visitParamExtractFloat
المعاملات
json— مستند JSON الذي يُبحث فيه عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
0. Float64
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractInt
Int64 من قيمة الحقل المسمّى field_name.
إذا كان 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
String محاطة بعلامتَي اقتباس مزدوجتين من قيمة الحقل المسمّى field_name.
تفاصيل التنفيذ
لا يوجد حاليًا دعم لنقاط الرمز بالتنسيق \uXXXX\uYYYY التي لا تنتمي إلى المستوى الأساسي متعدد اللغات (إذ تُحوَّل إلى CESU-8 بدلًا من UTF-8).
الصياغة
visitParamExtractString
الوسيطات
json— قيمة JSON التي يُبحث فيها عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
String
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractUInt
UInt64 من قيمة الحقل المسمّى field_name.
إذا كان 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