الانتقال إلى المحتوى الرئيسي

أنواع دوال JSON

هناك مجموعتان من الدوال لتحليل JSON:
  • simpleJSON* (visitParam*) وهي مصممة لتحليل مجموعة فرعية محدودة من JSON بسرعة فائقة.
  • JSONExtract* وهي مصممة لتحليل JSON العادي.

دوال simpleJSON ‏(visitParam)

يحتوي ClickHouse على دوال خاصة للعمل مع JSON المبسّط. تستند جميع دوال JSON هذه إلى افتراضات صارمة بشأن الشكل الذي يمكن أن يكون عليه JSON. وتحاول تنفيذ أقل قدر ممكن من المعالجة لإنجاز المهمة بأسرع ما يمكن. تُفترض الافتراضات التالية:
  1. يجب أن يكون اسم الحقل (وسيطة الدالة) ثابتًا.
  2. يجب أن يكون اسم الحقل مُرمَّزًا داخل JSON بطريقة معيارية ما. على سبيل المثال: simpleJSONHas('{"abc":"def"}', 'abc') = 1، لكن simpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0
  3. يُبحث عن الحقول في أي مستوى من مستويات التداخل، دون تمييز. وإذا وُجدت عدة حقول متطابقة، فيُستخدم أول ظهور.
  4. لا يحتوي JSON على محارف مسافة خارج القيم النصية الحرفية.

دوال JSONExtract

تعتمد هذه الدوال على simdjson، وقد صُممت لتلبية متطلبات تحليل JSON الأكثر تعقيدًا.

دوال JSONExtract غير الحساسة لحالة الأحرف

تُجري هذه الدوال مطابقة غير حساسة لحالة أحرف ASCII للمفاتيح عند استخراج القيم من كائنات JSON. وهي تعمل تمامًا مثل نظيراتها الحساسة لحالة الأحرف، باستثناء أن مطابقة مفاتيح الكائنات تتم من دون مراعاة حالة الأحرف. وعند وجود عدة مفاتيح متطابقة مع اختلاف حالة الأحرف، تُعاد أول مطابقة.
قد يكون أداء هذه الدوال أقل من نظيراتها الحساسة لحالة الأحرف، لذا استخدم دوال JSONExtract العادية إن أمكن.

JSONAllPaths

أُضيف في: v24.8.0 يعيد قائمة بجميع المسارات المخزنة في كل صف ضمن عمود JSON. الصيغة
JSONAllPaths(json)
الوسائط
  • json — عمود JSON. JSON
القيمة المُعادة يُرجع مصفوفةً تضم جميع المسارات في عمود JSON. Array(String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONAllPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllPaths(json)─┐
│ {"a":"42"}                           │ ['a']              │
│ {"b":"Hello"}                        │ ['b']              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a','c']          │
└──────────────────────────────────────┴────────────────────┘

JSONAllPathsWithTypes

أُضيفت في: v24.8.0 تعيد قائمة بجميع المسارات وأنواع البيانات المرتبطة بها والمخزنة في كل صف من عمود JSON. البنية
JSONAllPathsWithTypes(json)
الوسائط
  • json — عمود JSON. JSON
القيمة المُعادة تُرجع خريطة بجميع المسارات وأنواع بياناتها في عمود JSON. Map(String, String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONAllPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllPathsWithTypes(json)───────────────┐
│ {"a":"42"}                           │ {'a':'Int64'}                             │
│ {"b":"Hello"}                        │ {'b':'String'}                            │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'a':'Array(Nullable(Int64))','c':'Date'} │
└──────────────────────────────────────┴───────────────────────────────────────────┘

JSONAllValues

أُضيف في: v26.4.0 يعيد جميع القيم من كل صف في عمود JSON على شكل مصفوفة من السلاسل النصية. تُسلسَل القيم بصياغتها النصية وتُرتَّب حسب أسماء المسارات. الصياغة
JSONAllValues(json)
الوسائط
  • json — عمود JSON. JSON
القيمة المعادة تعيد مصفوفة تضم جميع القيم كسلاسل نصية في عمود JSON. Array(String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json": {"a": 42}}, {"json": {"b": "Hello"}}, {"json": {"a": [1, 2, 3], "c": "2020-01-01"}}
SELECT json, JSONAllValues(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllValues(json)──────┐
│ {"a":42}                             │ ['42']                   │
│ {"b":"Hello"}                        │ ['Hello']                │
│ {"a":[1,2,3],"c":"2020-01-01"}       │ ['[1,2,3]','2020-01-01'] │
└──────────────────────────────────────┴──────────────────────────┘

JSONArrayLength

تم تقديمها في: v23.2.0 تعيد عدد العناصر في مصفوفة JSON ذات المستوى الأعلى. تعيد الدالة NULL إذا كانت سلسلة JSON المُدخلة غير صالحة. البنية
JSONArrayLength(json)
الأسماء البديلة: JSON_ARRAY_LENGTH الوسيطات
  • json — String يحتوي على JSON صالح. String
القيمة المعادة يعيد عدد عناصر المصفوفة إذا كانت json سلسلة تمثل مصفوفة JSON صالحة، وإلا يعيد NULL. Nullable(UInt64) أمثلة مثال على الاستخدام
Query
SELECT
    JSONArrayLength(''),
    JSONArrayLength('[1,2,3]');
Response
┌─JSONArrayLength('')─┬─JSONArrayLength('[1,2,3]')─┐
│                ᴺᵁᴸᴸ │                          3 │
└─────────────────────┴────────────────────────────┘

JSONDynamicPaths

تم تقديمه في: v24.8.0 يعيد قائمة المسارات الديناميكية المخزَّنة كأعمدة فرعية منفصلة في عمود JSON. الصيغة
JSONDynamicPaths(json)
المعاملات
  • json — عمود JSON. JSON
القيمة المُعادة يعيد مصفوفة من المسارات الديناميكية في عمود JSON. Array(String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONDynamicPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONDynamicPaths(json)─┐
│ {"a":"42"}                           │ ['a']                  │
│ {"b":"Hello"}                        │ []                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a']                  │
└──────────────────────────────────────┴────────────────────────┘

JSONDynamicPathsWithTypes

أُضيفت في: v24.8.0 تعيد قائمة بالمسارات الديناميكية المخزّنة كأعمدة فرعية منفصلة، وأنواعها في كل صف ضمن عمود JSON. البنية
JSONDynamicPathsWithTypes(json)
المعاملات
  • json — عمود JSON. JSON
القيمة المُعادة يعرض خريطة بالمسارات الديناميكية وأنواع بياناتها في عمود JSON. Map(String, String) أمثلة مثال للاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONDynamicPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONDynamicPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {'a':'Int64'}                   │
│ {"b":"Hello"}                        │ {}                              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'a':'Array(Nullable(Int64))'}  │
└──────────────────────────────────────┴─────────────────────────────────┘

JSONExtract

قُدِّم في: v19.14.0 يحلّل JSON ويستخرج قيمةً من نوع بيانات ClickHouse المحدد. الصياغة
JSONExtract(json[, indices_or_keys, ...], return_type)
الوسيطات
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
  • return_type — نوع بيانات ClickHouse المراد إرجاعه. String
القيمة المُعادة يُعيد قيمة من نوع بيانات ClickHouse المحدَّد إن أمكن، وإلا يُعيد القيمة الافتراضية لذلك النوع. أمثلة مثال على الاستخدام
Query
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(String, Array(Float64))') AS res;
Response
┌─res──────────────────────────────┐
│ ('hello',[-100,200,300])         │
└──────────────────────────────────┘

JSONExtractArrayRaw

أُضيف في: v20.1.0 يعيد مصفوفةً تحتوي على عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة غير محللة. الصيغة
JSONExtractArrayRaw(json[, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON نصية مطلوب تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المُعادة تُرجع مصفوفة من السلاسل النصية التي تحتوي على عناصر مصفوفة JSON. وإذا لم يكن الجزء مصفوفة أو لم يكن موجودًا، فستُرجع مصفوفة فارغة. Array(String) أمثلة مثال على الاستخدام
Query
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') AS res;
Response
┌─res──────────────────────────┐
│ ['-100','200.0','"hello"']   │
└──────────────────────────────┘

JSONExtractArrayRawCaseInsensitive

أُضيف في: v25.8.0 يعيد مصفوفة تضم عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة نصية غير محلَّلة، مع استخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. تشبه هذه الدالة JSONExtractArrayRaw. البنية
JSONExtractArrayRawCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. الفهارس أو المفاتيح المستخدمة للتنقل داخل المصفوفة. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف String أو (U)Int*
القيمة المُعادة يعيد مصفوفة من سلاسل JSON الخام. Array(String) أمثلة أساسي
Query
SELECT JSONExtractArrayRawCaseInsensitive('{"Items": [1, 2, 3]}', 'ITEMS')
Response
['1','2','3']

JSONExtractBool

طُرح في: v20.1.0 يُحلِّل JSON ويستخرج قيمة من النوع Bool. البنية
JSONExtractBool(json[, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تتضمن صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المعادة تعيد قيمة من نوع Bool إذا وُجدت، وإلا فتعيد 0. Bool أمثلة مثال على الاستخدام
Query
SELECT JSONExtractBool('{"passed": true}', 'passed') AS res;
Response
┌─res─┐
│   1 │
└─────┘

JSONExtractBoolCaseInsensitive

أُضيفت في: v25.8.0 يُحلّل JSON ويستخرج قيمة منطقية باستخدام مطابقة المفاتيح غير الحساسة لحالة الأحرف. هذه الدالة مشابهة لـ JSONExtractBool. البنية
JSONExtractBoolCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. الفهارس أو المفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف String أو (U)Int*
القيمة المُعادة تعيد القيمة المنطقية المستخرجة (1 لـ true و0 لـ false)، و0 إذا لم يتم العثور عليها. UInt8 أمثلة بسيط
Query
SELECT JSONExtractBoolCaseInsensitive('{"IsActive": true}', 'isactive')
Response
1

JSONExtractCaseInsensitive

أُضيفت في: v25.8.0 تُحلِّل JSON وتستخرج قيمة بنوع بيانات ClickHouse المحدد باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـ JSONExtract. البنية
JSONExtractCaseInsensitive(json [, indices_or_keys...], return_type)
المعاملات
  • json — سلسلة JSON المراد تحليلها String
  • indices_or_keys — اختياري. الفهارس أو المفاتيح للوصول إلى الحقل. تخضع المفاتيح لمطابقة غير حساسة لحالة الأحرف String أو (U)Int*
  • return_type — نوع بيانات ClickHouse المراد استخراجه String
القيمة المُعادة تُرجع القيمة المستخرجة بنوع البيانات المحدد. Any أمثلة int_type
Query
SELECT JSONExtractCaseInsensitive('{"Number": 123}', 'number', 'Int32')
Response
123
array_type
Query
SELECT JSONExtractCaseInsensitive('{"List": [1, 2, 3]}', 'list', 'Array(Int32)')
Response
[1,2,3]

JSONExtractFloat

قُدِّم في: v20.1.0 يحلّل JSON ويستخرج قيمة من نوع Float. الصيغة
JSONExtractFloat(json[, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المُعادة تُعيد قيمة من نوع Float إذا كانت موجودة، وإلا فتُعيد 0. Float64 أمثلة مثال على الاستخدام
Query
SELECT JSONExtractFloat('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 2) AS res;
Response
┌─res─┐
│ 200 │
└─────┘

JSONExtractFloatCaseInsensitive

أُضيفت في: v25.8.0 تُحلّل JSON وتستخرج قيمة من النوع Float باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ JSONExtractFloat. الصيغة
JSONExtractFloatCaseInsensitive(json [, indices_or_keys]...)
الوسائط
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تُطابَق المفاتيح دون حساسية لحالة الأحرف String أو (U)Int*
القيمة المُعادة تعيد قيمة Float المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. Float64 أمثلة بسيط
Query
SELECT JSONExtractFloatCaseInsensitive('{"Price": 12.34}', 'PRICE')
Response
12.34

JSONExtractInt

أُضيفت في: v20.1.0 تُحلِّل JSON وتستخرج قيمة من النوع Int. الصياغة
JSONExtractInt(json[, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المعادة تعيد قيمة من النوع Int إذا كانت موجودة، وإلا فتعيد 0. Int64 أمثلة مثال على الاستخدام
Query
SELECT JSONExtractInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1) AS res;
Response
┌──res─┐
│ -100 │
└──────┘

JSONExtractIntCaseInsensitive

أُضيف في: v25.8.0 يحلّل JSON ويستخرج قيمة من نوع Int باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـ JSONExtractInt. الصياغة
JSONExtractIntCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المراد تحليلها String
  • indices_or_keys — اختياري. الفهارس أو المفاتيح المستخدمة للوصول إلى الحقل. تُطابَق المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة String أو (U)Int*
القيمة المُعادة تعيد قيمة Int المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. Int64 أمثلة بسيط
Query
SELECT JSONExtractIntCaseInsensitive('{"Value": 123}', 'value')
Response
123
متداخل
Query
SELECT JSONExtractIntCaseInsensitive('{"DATA": {"COUNT": 42}}', 'data', 'Count')
Response
42

JSONExtractKeys

أُضيفت في: v21.11.0 يحلّل سلسلة JSON ويستخرج المفاتيح. الصياغة
JSONExtractKeys(json[, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها. String
  • indices_or_keys — قائمة من صفر أو أكثر من الوسيطات، يمكن أن يكون كلٌّ منها سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المعادة تُرجع مصفوفة تتضمن مفاتيح كائن JSON. Array(String) أمثلة مثال على الاستخدام
Query
SELECT JSONExtractKeys('{"a": "hello", "b": [-100, 200.0, 300]}') AS res;
Response
┌─res─────────┐
│ ['a','b']   │
└─────────────┘

JSONExtractKeysAndValues

أُضيف في: v20.1.0 يحلّل أزواج المفتاح والقيمة من JSON، حيث تكون القيم من نوع بيانات ClickHouse المحدد. الصيغة
JSONExtractKeysAndValues(json[, indices_or_keys, ...], value_type)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
  • value_type — نوع بيانات ClickHouse للقيم. String
القيمة المُعادة يعيد مصفوفة من قيم Tuple تحتوي على أزواج المفتاح والقيمة بعد تحليلها. Array(Tuple(String, value_type)) أمثلة مثال على الاستخدام
Query
SELECT JSONExtractKeysAndValues('{"x": {"a": 5, "b": 7, "c": 11}}', 'Int8', 'x') AS res;
Response
┌─res────────────────────┐
│ [('a',5),('b',7),('c',11)] │
└────────────────────────┘

JSONExtractKeysAndValuesCaseInsensitive

تم تقديمها في: v25.8.0 يحلّل أزواج المفتاح-القيمة من JSON باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. تشبه هذه الدالة JSONExtractKeysAndValues. البنية
JSONExtractKeysAndValuesCaseInsensitive(json [, indices_or_keys...], value_type)
الوسائط
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. الفهارس أو المفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون مراعاة حالة الأحرف String أو (U)Int*
  • value_type — نوع بيانات ClickHouse للقيم String
القيمة المُعادة تعيد مصفوفة من Tuples تحتوي على أزواج مفتاح-قيمة. Array(Tuple(String, T)) أمثلة أساسي
Query
SELECT JSONExtractKeysAndValuesCaseInsensitive('{"Name": "Alice", "AGE": 30}', 'String')
Response
[('Name','Alice'),('AGE','30')]

JSONExtractKeysAndValuesRaw

أُضيفت في: v20.4.0 يعيد مصفوفة من Tuples تتضمن المفاتيح والقيم من كائن JSON. تُمثَّل جميع القيم كسلاسل نصية غير محلَّلة. الصياغة
JSONExtractKeysAndValuesRaw(json[, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها. String
  • indices_or_keys — قائمة تتكوّن من صفر أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المعادة يعيد مصفوفة من قيم Tuple تحتوي على أزواج مفتاح-قيمة محللة، حيث تكون القيم سلاسل غير محللة. Array(Tuple(String, String)) أمثلة مثال على الاستخدام
Query
SELECT JSONExtractKeysAndValuesRaw('{"a": [-100, 200.0], "b": "hello"}') AS res;
Response
┌─res──────────────────────────────────┐
│ [('a','[-100,200.0]'),('b','"hello"')] │
└──────────────────────────────────────┘

JSONExtractKeysAndValuesRawCaseInsensitive

استُحدث في: v25.8.0 يستخرج أزواج المفتاح والقيمة الخام من JSON باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـ JSONExtractKeysAndValuesRaw. الصياغة
JSONExtractKeysAndValuesRawCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرف String أو (U)Int*
القيمة المعادة تعيد مصفوفة من قيم Tuple تحتوي على أزواج مفتاح-قيمة على شكل سلاسل نصية خام. Array(Tuple(String, String)) أمثلة أساسي
Query
SELECT JSONExtractKeysAndValuesRawCaseInsensitive('{"Name": "Alice", "AGE": 30}')
Response
[('Name','"Alice"'),('AGE','30')]

JSONExtractKeysCaseInsensitive

أُضيف في: v25.8.0 يحلّل سلسلة JSON ويستخرج المفاتيح باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة للتنقّل داخل الكائنات المتداخلة. هذه الدالة مشابهة لـ JSONExtractKeys. البنية
JSONExtractKeysCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرف String أو (U)Int*
القيمة المعادة تعيد مصفوفة من المفاتيح من كائن JSON. Array(String) أمثلة بسيط
Query
SELECT JSONExtractKeysCaseInsensitive('{"Name": "Alice", "AGE": 30}')
Response
['Name','AGE']
متداخل
Query
SELECT JSONExtractKeysCaseInsensitive('{"User": {"name": "John", "AGE": 25}}', 'user')
Response
['name','AGE']

JSONExtractRaw

أُضيف في: v20.1.0 يعيد جزءًا من JSON على هيئة سلسلة غير محلَّلة. البنية
JSONExtractRaw(json[, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المُعادة تُعيد الجزء من JSON كسلسلة غير محلّلة. وإذا لم يكن هذا الجزء موجودًا أو كان من نوع غير صحيح، فستُعاد سلسلة فارغة. String أمثلة مثال على الاستخدام
Query
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') AS res;
Response
┌─res──────────────┐
│ [-100,200.0,300] │
└──────────────────┘

JSONExtractRawCaseInsensitive

أُضيف في: v25.8.0 يعيد جزءًا من JSON على هيئة سلسلة نصية غير محللة باستخدام مطابقة للمفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ JSONExtractRaw. البنية
JSONExtractRawCaseInsensitive(json [, indices_or_keys]...)
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تستخدم المفاتيح مطابقة تتجاهل حالة الأحرف String أو (U)Int*
القيمة المُعادة تعيد سلسلة JSON الخام للعنصر المستخرَج. String أمثلة كائن
Query
SELECT JSONExtractRawCaseInsensitive('{"Object": {"key": "value"}}', 'OBJECT')
Response
{"key":"value"}

JSONExtractString

طُرح في: v20.1.0 يُحلِّل JSON ويستخرج قيمة من نوع String. الصيغة
JSONExtractString(json[, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON المراد تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المُعادة تُعيد قيمة من نوع String إذا كانت موجودة، وإلا فتُعيد سلسلة فارغة. String أمثلة مثال على الاستخدام
Query
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') AS res;
Response
┌─res───┐
│ hello │
└───────┘

JSONExtractStringCaseInsensitive

أُضيفت في: v25.8.0 يُحلّل JSON ويستخرج قيمة نصية باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـ JSONExtractString. الصيغة
JSONExtractStringCaseInsensitive(json [, indices_or_keys]...)
الوسائط
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. وتدعم المفاتيح المطابقة غير الحساسة لحالة الأحرف String أو (U)Int*
القيمة المُعادة يعيد قيمة السلسلة المستخرجة، أو سلسلة فارغة إذا لم يتم العثور عليها. String أمثلة أساسي
Query
SELECT JSONExtractStringCaseInsensitive('{"ABC": "def"}', 'abc')
Response
def
Nested
Query
SELECT JSONExtractStringCaseInsensitive('{"User": {"Name": "John"}}', 'user', 'name')
Response
John

JSONExtractUInt

أُضيف في: v20.1.0 يحلّل JSON ويستخرج قيمة من النوع UInt. الصياغة
JSONExtractUInt(json [, indices_or_keys, ...])
الوسيطات
  • json — سلسلة JSON المطلوب تحليلها. String
  • indices_or_keys — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int*
القيمة المُعادة تُعيد قيمة UInt إذا كانت موجودة، وإلا تُعيد 0. UInt64 أمثلة مثال على الاستخدام
Query
SELECT JSONExtractUInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', -1) AS res;
Response
┌─res─┐
│ 300 │
└─────┘

JSONExtractUIntCaseInsensitive

أُضيف في: v25.8.0 يحلّل JSON ويستخرج قيمة من النوع UInt باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ JSONExtractUInt. البنية
JSONExtractUIntCaseInsensitive(json [, indices_or_keys]...)
الوسائط
  • json — سلسلة JSON المطلوب تحليلها String
  • indices_or_keys — اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف String أو (U)Int*
القيمة المُعادة تُرجع قيمة UInt المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. UInt64 أمثلة بسيط
Query
SELECT JSONExtractUIntCaseInsensitive('{"COUNT": 789}', 'count')
Response
789

JSONHas

أُضيف في: v20.1.0 يتحقق من وجود القيمة أو القيم المُقدَّمة في مستند JSON. البنية
JSONHas(json[ ,indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المراد تحليلها String
  • [ ,indices_or_keys, ...] — قائمة تضم صفرًا أو أكثر من الوسائط. String أو (U)Int*
القيمة المُعادة تُرجع 1 إذا كانت القيمة موجودة في json، وإلا فـ0 UInt8 أمثلة مثال على الاستخدام
Query
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 1;
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 4) = 0;
Response
1
0

JSONKey

تم تقديمه في: v20.1.0 يعيد مفتاح حقل في كائن JSON بحسب فهرسه (ابتداءً من 1). إذا مُرِّر JSON كسلسلة نصية، فسيُحلَّل أولًا. الوسيط الثاني هو مسار JSON للتنقل داخل الكائنات المتداخلة. تعيد الدالة اسم المفتاح في الموضع المحدد. البنية
JSONKey(json[, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المطلوب تحليلها. String
  • indices_or_keys — قائمة اختيارية بالفهرسات أو المفاتيح تحدد مسارًا إلى عنصر متداخل. يمكن أن تكون كل وسيطة إما سلسلة نصية (للوصول بالمفتاح) أو عددًا صحيحًا (للوصول بالفهرس بدءًا من 1). String أو Int*
القيمة المُعادة تعيد اسم المفتاح عند الموضع المحدد داخل كائن JSON. String أمثلة مثال على الاستخدام
Query
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
Response
a

JSONLength

ظهر في: v20.1.0 يُرجع طول مصفوفة JSON أو كائن JSON. إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح، فستُعاد القيمة 0. البنية
JSONLength(json [, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المراد تحليلها String
  • [, indices_or_keys, ...] — اختياري. قائمة تتضمن صفرًا أو أكثر من الوسائط. String أو (U)Int8/16/32/64
القيمة المُعادة يُرجع طول مصفوفة JSON أو كائن JSON، وإلا فيُرجع 0 إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح. UInt64 أمثلة مثال على الاستخدام
Query
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 3;
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}') = 2;
Response
1
1

JSONMergePatch

أُضيف في: v23.10.0 يعيد سلسلة كائن JSON مدمجة ناتجة عن دمج عدة كائنات JSON. الصيغة
JSONMergePatch(json1[, json2, ...])
الأسماء المستعارة: jsonMergePatch المعاملات
  • json1[, json2, ...] — سلسلة واحدة أو أكثر تحتوي على JSON صالح. String
القيمة المُعادة يعيد سلسلة JSON للكائن المدمج، إذا كانت سلاسل كائنات JSON صالحة. String أمثلة مثال على الاستخدام
Query
SELECT JSONMergePatch('{"a":1}', '{"name": "joey"}', '{"name": "tom"}', '{"name": "zoey"}') AS res;
Response
┌─res───────────────────┐
│ {"a":1,"name":"zoey"} │
└───────────────────────┘

JSONSharedDataPaths

قُدِّمت في: v24.8.0 يعيد قائمة المسارات المخزَّنة في بنية البيانات المشتركة ضمن عمود JSON. الصياغة
JSONSharedDataPaths(json)
الوسائط
  • json — عمود JSON. JSON
القيمة المُعادة تُرجع مصفوفة من المسارات المخزّنة في بنية البيانات المشتركة ضمن عمود JSON. Array(String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONSharedDataPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONSharedDataPaths(json)─┐
│ {"a":"42"}                           │ []                        │
│ {"b":"Hello"}                        │ ['b']                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['c']                     │
└──────────────────────────────────────┴───────────────────────────┘

JSONSharedDataPathsWithTypes

أُضيفت في: v24.8.0 تعيد قائمة بالمسارات المخزَّنة في بنية البيانات المشتركة وأنواعها في كل صف ضمن عمود JSON. الصياغة
JSONSharedDataPathsWithTypes(json)
الوسائط
  • json — عمود JSON. JSON
القيمة المُعادة يعيد خريطةً للمسارات المخزّنة في بنية البيانات المشتركة وأنواع بياناتها ضمن عمود JSON. Map(String, String) أمثلة مثال على الاستخدام
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONSharedDataPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONSharedDataPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {}                                  │
│ {"b":"Hello"}                        │ {'b':'String'}                      │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'c':'Date'}                        │
└──────────────────────────────────────┴─────────────────────────────────────┘

JSONType

استُحدث في: v20.1.0 يعيد نوع قيمة JSON. وإذا لم تكن القيمة موجودة، فستتم إعادة Null=0. البنية
JSONType(json[, indices_or_keys, ...])
الوسائط
  • json — سلسلة JSON المطلوب تحليلها String
  • json[, indices_or_keys, ...] — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. String أو (U)Int8/16/32/64
القيمة المُعادة يُرجع نوع قيمة JSON كسلسلة نصية، وإذا لم تكن القيمة موجودة، فسيُرجع Null=0 Enum أمثلة مثال على الاستخدام
Query
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}') = 'Object';
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') = 'String';
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 'Array';
Response
1
1
1

JSON_EXISTS

أُضيف في: v21.8.0 إذا كانت القيمة موجودة في مستند JSON، فستُعاد 1. إذا لم تكن القيمة موجودة، فستُعاد 0. البنية
JSON_EXISTS(json, path)
الوسائط
  • json — سلسلة نصية تحتوي على JSON صالح. String
  • path — سلسلة نصية تمثل المسار. String
القيمة المُعادة يعيد 1 إذا كانت القيمة موجودة في مستند JSON، وإلا فيعيد 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT JSON_EXISTS('{"hello":1}', '$.hello');
SELECT JSON_EXISTS('{"hello":{"world":1}}', '$.hello.world');
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[*]');
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[0]');
Response
┌─JSON_EXISTS(⋯ '$.hello')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯llo.world')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[*]')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[0]')─┐
│                        1 │
└──────────────────────────┘

JSON_QUERY

أُضيف في: v21.8.0 يُحلِّل JSON ويستخرج قيمةً بصيغة مصفوفة JSON أو كائن JSON. إذا لم تكن القيمة موجودة، فسيُعاد نص فارغ. الصيغة
JSON_QUERY(json, path)
المعاملات
  • json — سلسلة نصية بتنسيق JSON صالح. String
  • path — سلسلة نصية تمثل المسار. String
القيمة المعادة تعيد مصفوفة JSON أو كائن JSON المستخرَجَين على هيئة سلسلة نصية، أو سلسلة نصية فارغة إذا لم تكن القيمة موجودة. String أمثلة مثال على الاستخدام
Query
SELECT JSON_QUERY('{"hello":"world"}', '$.hello');
SELECT JSON_QUERY('{"array":[[0, 1, 2, 3, 4, 5], [0, -1, -2, -3, -4, -5]]}', '$.array[*][0 to 2, 4]');
SELECT JSON_QUERY('{"hello":2}', '$.hello');
SELECT toTypeName(JSON_QUERY('{"hello":2}', '$.hello'));
Response
["world"]
[0, 1, 4, 0, -1, -4]
[2]
String

JSON_VALUE

أُضيفت في: v21.11.0 تُحلّل هذه الدالة JSON وتستخرج قيمة منه كقيمة JSON scalar. وإذا لم تكن القيمة موجودة، فستُعاد سلسلة نصية فارغة افتراضيًا. تخضع هذه الدالة للإعدادات التالية:
  • عند استخدام SET function_json_value_return_type_allow_nullable = true، ستُعاد NULL. وإذا كانت القيمة من نوع معقّد (مثل: struct أو array أو map)، فستُعاد سلسلة نصية فارغة افتراضيًا.
  • عند استخدام SET function_json_value_return_type_allow_complex = true، ستُعاد القيمة المعقّدة.
الصياغة
JSON_VALUE(json, path)
الوسيطات
  • json — سلسلة نصية تحتوي على JSON صالح. String
  • path — سلسلة نصية تمثل المسار. String
القيمة المُعادة يعيد القيمة القياسية المستخرجة من JSON كسلسلة نصية، أو سلسلة فارغة إذا لم تكن القيمة موجودة. String أمثلة مثال على الاستخدام
Query
SELECT JSON_VALUE('{"hello":"world"}', '$.hello');
SELECT JSON_VALUE('{"array":[[0, 1, 2, 3, 4, 5], [0, -1, -2, -3, -4, -5]]}', '$.array[*][0 to 2, 4]');
SELECT JSON_VALUE('{"hello":2}', '$.hello');
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
Response
world
0
2
ᴺᵁᴸᴸ

dynamicElement

أُضيفت في: v24.1.0 تستخرج عمودًا بالنوع المحدد من عمود Dynamic. تتيح لك هذه الدالة استخراج قيم من نوع محدد من عمود Dynamic. إذا كان الصف يحتوي على قيمة من النوع المطلوب، فإنها تُرجع تلك القيمة. وإذا كان الصف يحتوي على نوع مختلف أو NULL، فإنها تُرجع NULL للأنواع المفردة أو مصفوفة فارغة لأنواع المصفوفات. الصيغة
dynamicElement(dynamic, type_name)
الوسيطات
  • dynamic — عمود Dynamic المراد الاستخراج منه. Dynamic
  • type_name — اسم النوع المراد استخراجه من بين الأنواع الممكنة (مثل: ‘String’ و’Int64’ و’Array(Int64)’).
القيمة المُعادة يعيد قيمًا من النوع المحدد من عمود Dynamic. ويعيد NULL للأنواع غير المطابقة (أو مصفوفة فارغة للأنواع من نوع Array). Any أمثلة استخراج أنواع مختلفة من عمود Dynamic
Query
CREATE TABLE test (d Dynamic) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, dynamicType(d), dynamicElement(d, 'String'), dynamicElement(d, 'Int64'), dynamicElement(d, 'Array(Int64)'), dynamicElement(d, 'Date'), dynamicElement(d, 'Array(String)') FROM test
Response
┌─d─────────────┬─dynamicType(d)─┬─dynamicElement(d, 'String')─┬─dynamicElement(d, 'Int64')─┬─dynamicElement(d, 'Array(Int64)')─┬─dynamicElement(d, 'Date')─┬─dynamicElement(d, 'Array(String)')─┐
│ ᴺᵁᴸᴸ          │ None           │ ᴺᵁᴸᴸ                        │                       ᴺᵁᴸᴸ │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ 42            │ Int64          │ ᴺᵁᴸᴸ                        │                         42 │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ Hello, World! │ String         │ Hello, World!               │                       ᴺᵁᴸᴸ │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ Array(Int64)   │ ᴺᵁᴸᴸ                        │                       ᴺᵁᴸᴸ │ [1,2,3]                           │                      ᴺᵁᴸᴸ │ []                                 │
└───────────────┴────────────────┴─────────────────────────────┴────────────────────────────┴───────────────────────────────────┴───────────────────────────┴────────────────────────────────────┘

dynamicType

أُضيف في: v24.1.0 يعيد اسم النوع الفعلي لكل صف في عمود Dynamic. بالنسبة إلى الصفوف التي تحتوي على NULL، تُعيد الدالة ‘None’. أما في جميع الصفوف الأخرى، فتُعيد نوع البيانات الفعلي المخزَّن في ذلك الصف من عمود Dynamic (على سبيل المثال: ‘Int64’ و’String’ و’Array(Int64)’). البنية
dynamicType(dynamic)
الوسائط
  • dynamic — عمود Dynamic المطلوب فحصه. Dynamic
القيمة المعادة تُرجع اسم نوع القيمة المخزنة في كل صف، أو ‘None’ لقيم NULL. String أمثلة فحص الأنواع في عمود Dynamic
Query
CREATE TABLE test (d Dynamic) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, dynamicType(d) FROM test;
Response
┌─d─────────────┬─dynamicType(d)─┐
│ ᴺᵁᴸᴸ          │ None           │
│ 42            │ Int64          │
│ Hello, World! │ String         │
│ [1,2,3]       │ Array(Int64)   │
└───────────────┴────────────────┘

isDynamicElementInSharedData

أُضيف في: v24.1.0 يعيد true للصفوف في عمود Dynamic المخزَّنة بتنسيق Variant المشترك بدلًا من تخزينها كأعمدة فرعية منفصلة. عندما يكون لعمود Dynamic حد max_types، فإن القيم التي تتجاوز هذا الحد تُخزَّن بتنسيق ثنائي مشترك بدلًا من فصلها إلى أعمدة فرعية منفصلة بحسب النوع. تحدد هذه الدالة الصفوف المخزَّنة بهذا التنسيق المشترك. الصيغة
isDynamicElementInSharedData(dynamic)
الوسيطات
  • dynamic — عمود Dynamic المراد فحصه. Dynamic
القيمة المُعادة تُرجِع true إذا كانت القيمة مخزّنة بتنسيق shared variant format، وfalse إذا كانت مخزّنة كعمود فرعي منفصل أو كانت NULL. Bool أمثلة التحقق من تنسيق التخزين في عمود Dynamic مع حد max_types
Query
CREATE TABLE test (d Dynamic(max_types=2)) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, isDynamicElementInSharedData(d) FROM test;
Response
┌─d─────────────┬─isDynamicElementInSharedData(d)─┐
│ ᴺᵁᴸᴸ          │ false                           │
│ 42            │ false                           │
│ Hello, World! │ true                            │
│ [1,2,3]       │ true                            │
└───────────────┴─────────────────────────────────┘

isValidJSON

أُضيف في: v20.1.0 يتحقق من أن السلسلة النصية المُمرَّرة بتنسيق JSON صالح. الصيغة
isValidJSON(json)
المعاملات
  • json — سلسلة JSON المطلوب التحقق من صحتها String
القيمة المُعادة يعيد 1 إذا كانت السلسلة JSON صالحة، وإلا 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT isValidJSON('{"a": "hello", "b": [-100, 200.0, 300]}') = 1;
SELECT isValidJSON('not JSON') = 0;
Response
1
0
استخدام الأعداد الصحيحة للوصول إلى مصفوفات JSON وكائنات JSON
Query
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 0);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 2);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', -1);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', -2);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 3);
Response
0
1
1
1
1
1
0

prettyPrintJSON

أُضيفت في: v26.4.0 يعيد نسخة منسّقة من سلسلة JSON، مع أسطر جديدة ومسافات بادئة. البنية
prettyPrintJSON(json [, indent])
الوسائط
  • json — سلسلة JSON صالحة لتنسيقها. String
  • indent — عدد المسافات لكل مستوى من الإزاحة. الافتراضي: 4. الحد الأقصى: 32 UInt*
القيمة المُعادة سلسلة JSON منسّقة لسهولة القراءة. String أمثلة كائن بسيط
Query
SELECT prettyPrintJSON('{"a":1,"b":"hello"}');
Response
{
    "a": 1,
    "b": "hello"
}
مسافة بادئة مخصّصة
Query
SELECT prettyPrintJSON('{"a":1}', 8);
Response
{
        "a": 1
}

simpleJSONExtractBool

أُضيف في: v21.4.0 يحلّل قيمة true/false من قيمة الحقل المسمّى field_name. النتيجة هي UInt8. البنية
simpleJSONExtractBool(json, field_name)
الأسماء البديلة: visitParamExtractBool الوسيطات
  • json — بيانات JSON التي يُبحث فيها عن الحقل. String
  • field_name — اسم الحقل المطلوب البحث عنه. const String
القيمة المعادة تعيد 1 إذا كانت قيمة الحقل هي true، وإلا فتعيد 0. وهذا يعني أن هذه الدالة ستُعيد 0 أيضًا في الحالات التالية، وليس في هذه الحالات فقط:
  • إذا كان الحقل غير موجود.
  • إذا كان الحقل يحتوي على true كسلسلة نصية، على سبيل المثال: {"field":"true"}.
  • إذا كان الحقل يحتوي على 1 كقيمة رقمية. UInt8
أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":false,"bar":true}');
INSERT INTO jsons VALUES ('{"foo":"true","qux":1}');

SELECT simpleJSONExtractBool(json, 'bar') FROM jsons ORDER BY json;
SELECT simpleJSONExtractBool(json, 'foo') FROM jsons ORDER BY json;
Response
0
1
0
0

simpleJSONExtractFloat

أُضيف في: v21.4.0 يحلّل قيمة Float64 من قيمة الحقل المسمّى field_name. إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية. إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فسيُعيد 0. الصياغة
simpleJSONExtractFloat(json, field_name)
الأسماء المستعارة: visitParamExtractFloat المعاملات
  • json — مستند JSON الذي يُبحث فيه عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المُعادة ترجع الرقم المستخرَج من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وإلا فترجع 0. Float64 أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractFloat(json, 'foo') FROM jsons ORDER BY json;
Response
0
-4000
0
-3.4
5

simpleJSONExtractInt

قُدِّم في: v21.4.0 يحلّل قيمة Int64 من قيمة الحقل المسمّى field_name. إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية. إذا لم يكن الحقل موجودًا، أو كان موجودًا ولكنه لا يحتوي على رقم، فستُعاد القيمة 0. الصياغة
simpleJSONExtractInt(json, field_name)
الأسماء المستعارة: visitParamExtractInt المعاملات
  • json — ‏JSON الذي يُبحث فيه عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المعادة يعيد الرقم الذي جرى تحليله من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وإلا فيُعيد 0 Int64 أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractInt(json, 'foo') FROM jsons ORDER BY json;
Response
0
-4
0
-3
5

simpleJSONExtractRaw

أُضيف في: v21.4.0 يعيد قيمة الحقل المسمى field_name كسلسلة String، بما في ذلك الفواصل. الصياغة
simpleJSONExtractRaw(json, field_name)
الأسماء المستعارة: visitParamExtractRaw الوسيطات
  • json — نص JSON الذي يُبحث فيه عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المعادة تعيد قيمة الحقل كسلسلة نصية، بما في ذلك الفواصل إذا كان الحقل موجودًا، أو سلسلة نصية فارغة بخلاف ذلك String أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":{"def":[1,2,3]}}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractRaw(json, 'foo') FROM jsons ORDER BY json;
Response
"-4e3"
-3.4
5
{"def":[1,2,3]}

simpleJSONExtractString

أُضيفت في: v21.4.0 يحلّل قيمة String محاطة بعلامتَي اقتباس مزدوجتين من قيمة الحقل المسمّى field_name. تفاصيل التنفيذ لا يوجد حاليًا دعم لنقاط الرمز بالتنسيق \uXXXX\uYYYY التي لا تنتمي إلى المستوى الأساسي متعدد اللغات (إذ تُحوَّل إلى CESU-8 بدلًا من UTF-8). الصياغة
simpleJSONExtractString(json, field_name)
الأسماء البديلة: visitParamExtractString الوسيطات
  • json — قيمة JSON التي يُبحث فيها عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المُعادة تُعيد قيمة الحقل كسلسلة نصية بعد فك الإفلات، بما في ذلك الفواصل. وتُعاد سلسلة نصية فارغة إذا لم يكن الحقل يحتوي على سلسلة نصية محاطة بعلامتي اقتباس مزدوجتين، أو إذا تعذّر فك الإفلات، أو إذا لم يكن الحقل موجودًا String أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"\\n\\u0000"}');
INSERT INTO jsons VALUES ('{"foo":"\\u263"}');
INSERT INTO jsons VALUES ('{"foo":"\\u263a"}');
INSERT INTO jsons VALUES ('{"foo":"hello}');

SELECT simpleJSONExtractString(json, 'foo') FROM jsons ORDER BY json;
Response
\n\0


simpleJSONExtractUInt

تم تقديمه في: v21.4.0 يستخرج قيمة UInt64 من قيمة الحقل المسمّى field_name. إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية. إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فستُعاد القيمة 0. الصيغة
simpleJSONExtractUInt(json, field_name)
الأسماء البديلة: visitParamExtractUInt الوسيطات
  • json — كائن JSON الذي يُبحث فيه عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المعادة تعيد الرقم الذي تم تحليله من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وتعيد 0 بخلاف ذلك UInt64 أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"4e3"}');
INSERT INTO jsons VALUES ('{"foo":3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractUInt(json, 'foo') FROM jsons ORDER BY json;
Response
0
4
0
3
5

simpleJSONHas

أُضيف في: v21.4.0 يتحقق مما إذا كان هناك حقل باسم field_name. البنية
simpleJSONHas(json, field_name)
الأسماء المستعارة: visitParamHas الوسائط
  • json — قيمة JSON التي يُبحث فيها عن الحقل. String
  • field_name — اسم الحقل المراد البحث عنه. const String
القيمة المعادة يعيد 1 إذا كان الحقل موجودًا، وإلا فيُعيد 0 UInt8 أمثلة مثال على الاستخدام
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"true","qux":1}');

SELECT simpleJSONHas(json, 'foo') FROM jsons;
SELECT simpleJSONHas(json, 'bar') FROM jsons;
Response
1
0

toJSONString

أُضيف في: v21.7.0 يحوِّل قيمة إلى تمثيلها بتنسيق JSON. وتُدعَم أنواع البيانات المختلفة والبُنى المتداخلة. تُحاط الأعداد الصحيحة بطول 64 بت أو أكثر (مثل UInt64 أو Int128) بعلامات اقتباس افتراضيًا. ويحدّد output_format_json_quote_64bit_integers هذا السلوك. تُستبدل القيم الخاصة NaN و inf بـ null. فعِّل الإعداد output_format_json_quote_denormals لإظهارها. عند تحويل قيمة Enum، تُخرج الدالة اسمها. انظر أيضًا: البنية
toJSONString(value)
الوسيطات
  • value — القيمة المطلوب إجراء تسلسل لها. يمكن أن تكون القيمة من أي نوع بيانات. Any
القيمة المُعادة تعيد التمثيل بصيغة JSON للقيمة. String أمثلة تسلسل Map
Query
SELECT toJSONString(map('key1', 1, 'key2', 2));
Response
┌─toJSONString(map('key1', 1, 'key2', 2))─┐
│ {"key1":1,"key2":2}                     │
└─────────────────────────────────────────┘
قيم خاصة
Query
SELECT toJSONString(tuple(1.25, NULL, NaN, +inf, -inf, [])) SETTINGS output_format_json_quote_denormals = 1;
Response
┌─toJSONString(tuple(1.25, NULL, NaN, plus(inf), minus(inf), []))─┐
│ [1.25,null,"nan","inf","-inf",[]]                               │
└─────────────────────────────────────────────────────────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦