> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق دوال JSON

# دوال JSON

<div id="types-of-functions">
  ## أنواع دوال JSON
</div>

هناك مجموعتان من الدوال لتحليل JSON:

* [`simpleJSON*` (`visitParam*`)](#simplejson-visitparam-functions) وهي مصممة لتحليل مجموعة فرعية محدودة من JSON بسرعة فائقة.
* [`JSONExtract*`](#jsonextract-functions) وهي مصممة لتحليل JSON العادي.

<div id="simplejson-visitparam-functions">
  ### دوال simpleJSON ‏(visitParam)
</div>

يحتوي ClickHouse على دوال خاصة للعمل مع JSON المبسّط. تستند جميع دوال JSON هذه إلى افتراضات صارمة بشأن الشكل الذي يمكن أن يكون عليه JSON. وتحاول تنفيذ أقل قدر ممكن من المعالجة لإنجاز المهمة بأسرع ما يمكن.

تُفترض الافتراضات التالية:

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

<div id="jsonextract-functions">
  ### دوال JSONExtract
</div>

تعتمد هذه الدوال على [simdjson](https://github.com/lemire/simdjson)، وقد صُممت لتلبية متطلبات تحليل JSON الأكثر تعقيدًا.

<div id="case-insensitive-jsonextract-functions">
  ### دوال JSONExtract غير الحساسة لحالة الأحرف
</div>

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

<Note>
  قد يكون أداء هذه الدوال أقل من نظيراتها الحساسة لحالة الأحرف، لذا استخدم دوال JSONExtract العادية إن أمكن.
</Note>

{/*AUTOGENERATED_START*/}

<div id="JSONAllPaths">
  ## JSONAllPaths
</div>

أُضيف في: v24.8.0

يعيد قائمة بجميع المسارات المخزنة في كل صف ضمن عمود JSON.

**الصيغة**

```sql theme={null}
JSONAllPaths(json)
```

**الوسائط**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

يُرجع مصفوفةً تضم جميع المسارات في عمود JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONAllPaths(json)─┐
│ {"a":"42"}                           │ ['a']              │
│ {"b":"Hello"}                        │ ['b']              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a','c']          │
└──────────────────────────────────────┴────────────────────┘
```

<div id="JSONAllPathsWithTypes">
  ## JSONAllPathsWithTypes
</div>

أُضيفت في: v24.8.0

تعيد قائمة بجميع المسارات وأنواع البيانات المرتبطة بها والمخزنة في كل صف من عمود JSON.

**البنية**

```sql theme={null}
JSONAllPathsWithTypes(json)
```

**الوسائط**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

تُرجع خريطة بجميع المسارات وأنواع بياناتها في عمود JSON. [`Map(String, String)`](/ar/reference/data-types/map)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─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'} │
└──────────────────────────────────────┴───────────────────────────────────────────┘
```

<div id="JSONAllValues">
  ## JSONAllValues
</div>

أُضيف في: v26.4.0

يعيد جميع القيم من كل صف في عمود JSON على شكل مصفوفة من السلاسل النصية.
تُسلسَل القيم بصياغتها النصية وتُرتَّب حسب أسماء المسارات.

**الصياغة**

```sql theme={null}
JSONAllValues(json)
```

**الوسائط**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المعادة**

تعيد مصفوفة تضم جميع القيم كسلاسل نصية في عمود JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONAllValues(json)──────┐
│ {"a":42}                             │ ['42']                   │
│ {"b":"Hello"}                        │ ['Hello']                │
│ {"a":[1,2,3],"c":"2020-01-01"}       │ ['[1,2,3]','2020-01-01'] │
└──────────────────────────────────────┴──────────────────────────┘
```

<div id="JSONArrayLength">
  ## JSONArrayLength
</div>

تم تقديمها في: v23.2.0

تعيد عدد العناصر في مصفوفة JSON ذات المستوى الأعلى.
تعيد الدالة `NULL` إذا كانت سلسلة JSON المُدخلة غير صالحة.

**البنية**

```sql theme={null}
JSONArrayLength(json)
```

**الأسماء البديلة**: `JSON_ARRAY_LENGTH`

**الوسيطات**

* `json` — String يحتوي على JSON صالح. [`String`](/ar/reference/data-types/string)

**القيمة المعادة**

يعيد عدد عناصر المصفوفة إذا كانت `json` سلسلة تمثل مصفوفة JSON صالحة، وإلا يعيد `NULL`. [`Nullable(UInt64)`](/ar/reference/data-types/nullable)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    JSONArrayLength(''),
    JSONArrayLength('[1,2,3]');
```

```response title=Response theme={null}
┌─JSONArrayLength('')─┬─JSONArrayLength('[1,2,3]')─┐
│                ᴺᵁᴸᴸ │                          3 │
└─────────────────────┴────────────────────────────┘
```

<div id="JSONDynamicPaths">
  ## JSONDynamicPaths
</div>

تم تقديمه في: v24.8.0

يعيد قائمة المسارات الديناميكية المخزَّنة كأعمدة فرعية منفصلة في عمود JSON.

**الصيغة**

```sql theme={null}
JSONDynamicPaths(json)
```

**المعاملات**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

يعيد مصفوفة من المسارات الديناميكية في عمود JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONDynamicPaths(json)─┐
│ {"a":"42"}                           │ ['a']                  │
│ {"b":"Hello"}                        │ []                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a']                  │
└──────────────────────────────────────┴────────────────────────┘
```

<div id="JSONDynamicPathsWithTypes">
  ## JSONDynamicPathsWithTypes
</div>

أُضيفت في: v24.8.0

تعيد قائمة بالمسارات الديناميكية المخزّنة كأعمدة فرعية منفصلة، وأنواعها في كل صف ضمن عمود JSON.

**البنية**

```sql theme={null}
JSONDynamicPathsWithTypes(json)
```

**المعاملات**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

يعرض خريطة بالمسارات الديناميكية وأنواع بياناتها في عمود JSON. [`Map(String, String)`](/ar/reference/data-types/map)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONDynamicPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {'a':'Int64'}                   │
│ {"b":"Hello"}                        │ {}                              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'a':'Array(Nullable(Int64))'}  │
└──────────────────────────────────────┴─────────────────────────────────┘
```

<div id="JSONExtract">
  ## JSONExtract
</div>

قُدِّم في: v19.14.0

يحلّل JSON ويستخرج قيمةً من نوع بيانات ClickHouse المحدد.

**الصياغة**

```sql theme={null}
JSONExtract(json[, indices_or_keys, ...], return_type)
```

**الوسيطات**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)
* `return_type` — نوع بيانات ClickHouse المراد إرجاعه. [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يُعيد قيمة من نوع بيانات ClickHouse المحدَّد إن أمكن، وإلا يُعيد القيمة الافتراضية لذلك النوع.

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(String, Array(Float64))') AS res;
```

```response title=Response theme={null}
┌─res──────────────────────────────┐
│ ('hello',[-100,200,300])         │
└──────────────────────────────────┘
```

<div id="JSONExtractArrayRaw">
  ## JSONExtractArrayRaw
</div>

أُضيف في: v20.1.0

يعيد مصفوفةً تحتوي على عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة غير محللة.

**الصيغة**

```sql theme={null}
JSONExtractArrayRaw(json[, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON نصية مطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُرجع مصفوفة من السلاسل النصية التي تحتوي على عناصر مصفوفة JSON. وإذا لم يكن الجزء مصفوفة أو لم يكن موجودًا، فستُرجع مصفوفة فارغة. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') AS res;
```

```response title=Response theme={null}
┌─res──────────────────────────┐
│ ['-100','200.0','"hello"']   │
└──────────────────────────────┘
```

<div id="JSONExtractArrayRawCaseInsensitive">
  ## JSONExtractArrayRawCaseInsensitive
</div>

أُضيف في: v25.8.0

يعيد مصفوفة تضم عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة نصية غير محلَّلة، مع استخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. تشبه هذه الدالة [`JSONExtractArrayRaw`](#JSONExtractArrayRaw).

**البنية**

```sql theme={null}
JSONExtractArrayRawCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. الفهارس أو المفاتيح المستخدمة للتنقل داخل المصفوفة. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

يعيد مصفوفة من سلاسل JSON الخام. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**أساسي**

```sql title=Query theme={null}
SELECT JSONExtractArrayRawCaseInsensitive('{"Items": [1, 2, 3]}', 'ITEMS')
```

```response title=Response theme={null}
['1','2','3']
```

<div id="JSONExtractBool">
  ## JSONExtractBool
</div>

طُرح في: v20.1.0

يُحلِّل JSON ويستخرج قيمة من النوع Bool.

**البنية**

```sql theme={null}
JSONExtractBool(json[, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تتضمن صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تعيد قيمة من نوع `Bool` إذا وُجدت، وإلا فتعيد `0`. [`Bool`](/ar/reference/data-types/boolean)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractBool('{"passed": true}', 'passed') AS res;
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="JSONExtractBoolCaseInsensitive">
  ## JSONExtractBoolCaseInsensitive
</div>

أُضيفت في: v25.8.0

يُحلّل JSON ويستخرج قيمة منطقية باستخدام مطابقة المفاتيح غير الحساسة لحالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractBool`](#JSONExtractBool).

**البنية**

```sql theme={null}
JSONExtractBoolCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. الفهارس أو المفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد القيمة المنطقية المستخرجة (1 لـ true و0 لـ false)، و0 إذا لم يتم العثور عليها. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT JSONExtractBoolCaseInsensitive('{"IsActive": true}', 'isactive')
```

```response title=Response theme={null}
1
```

<div id="JSONExtractCaseInsensitive">
  ## JSONExtractCaseInsensitive
</div>

أُضيفت في: v25.8.0

تُحلِّل JSON وتستخرج قيمة بنوع بيانات ClickHouse المحدد باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـ [`JSONExtract`](#JSONExtract).

**البنية**

```sql theme={null}
JSONExtractCaseInsensitive(json [, indices_or_keys...], return_type)
```

**المعاملات**

* `json` — سلسلة JSON المراد تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. الفهارس أو المفاتيح للوصول إلى الحقل. تخضع المفاتيح لمطابقة غير حساسة لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)
* `return_type` — نوع بيانات ClickHouse المراد استخراجه [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

تُرجع القيمة المستخرجة بنوع البيانات المحدد. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**int\_type**

```sql title=Query theme={null}
SELECT JSONExtractCaseInsensitive('{"Number": 123}', 'number', 'Int32')
```

```response title=Response theme={null}
123
```

**array\_type**

```sql title=Query theme={null}
SELECT JSONExtractCaseInsensitive('{"List": [1, 2, 3]}', 'list', 'Array(Int32)')
```

```response title=Response theme={null}
[1,2,3]
```

<div id="JSONExtractFloat">
  ## JSONExtractFloat
</div>

قُدِّم في: v20.1.0

يحلّل JSON ويستخرج قيمة من نوع Float.

**الصيغة**

```sql theme={null}
JSONExtractFloat(json[, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُعيد قيمة من نوع Float إذا كانت موجودة، وإلا فتُعيد `0`. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractFloat('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 2) AS res;
```

```response title=Response theme={null}
┌─res─┐
│ 200 │
└─────┘
```

<div id="JSONExtractFloatCaseInsensitive">
  ## JSONExtractFloatCaseInsensitive
</div>

أُضيفت في: v25.8.0

تُحلّل JSON وتستخرج قيمة من النوع Float باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractFloat`](#JSONExtractFloat).

**الصيغة**

```sql theme={null}
JSONExtractFloatCaseInsensitive(json [, indices_or_keys]...)
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تُطابَق المفاتيح دون حساسية لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد قيمة Float المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT JSONExtractFloatCaseInsensitive('{"Price": 12.34}', 'PRICE')
```

```response title=Response theme={null}
12.34
```

<div id="JSONExtractInt">
  ## JSONExtractInt
</div>

أُضيفت في: v20.1.0

تُحلِّل JSON وتستخرج قيمة من النوع Int.

**الصياغة**

```sql theme={null}
JSONExtractInt(json[, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تعيد قيمة من النوع Int إذا كانت موجودة، وإلا فتعيد `0`. [`Int64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1) AS res;
```

```response title=Response theme={null}
┌──res─┐
│ -100 │
└──────┘
```

<div id="JSONExtractIntCaseInsensitive">
  ## JSONExtractIntCaseInsensitive
</div>

أُضيف في: v25.8.0

يحلّل JSON ويستخرج قيمة من نوع Int باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـ [`JSONExtractInt`](#JSONExtractInt).

**الصياغة**

```sql theme={null}
JSONExtractIntCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المراد تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. الفهارس أو المفاتيح المستخدمة للوصول إلى الحقل. تُطابَق المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد قيمة Int المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. [`Int64`](/ar/reference/data-types/int-uint)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT JSONExtractIntCaseInsensitive('{"Value": 123}', 'value')
```

```response title=Response theme={null}
123
```

**متداخل**

```sql title=Query theme={null}
SELECT JSONExtractIntCaseInsensitive('{"DATA": {"COUNT": 42}}', 'data', 'Count')
```

```response title=Response theme={null}
42
```

<div id="JSONExtractKeys">
  ## JSONExtractKeys
</div>

أُضيفت في: v21.11.0

يحلّل سلسلة JSON ويستخرج المفاتيح.

**الصياغة**

```sql theme={null}
JSONExtractKeys(json[, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة من صفر أو أكثر من الوسيطات، يمكن أن يكون كلٌّ منها سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تُرجع مصفوفة تتضمن مفاتيح كائن JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractKeys('{"a": "hello", "b": [-100, 200.0, 300]}') AS res;
```

```response title=Response theme={null}
┌─res─────────┐
│ ['a','b']   │
└─────────────┘
```

<div id="JSONExtractKeysAndValues">
  ## JSONExtractKeysAndValues
</div>

أُضيف في: v20.1.0

يحلّل أزواج المفتاح والقيمة من JSON، حيث تكون القيم من نوع بيانات ClickHouse المحدد.

**الصيغة**

```sql theme={null}
JSONExtractKeysAndValues(json[, indices_or_keys, ...], value_type)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)
* `value_type` — نوع بيانات ClickHouse للقيم. [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يعيد مصفوفة من قيم Tuple تحتوي على أزواج المفتاح والقيمة بعد تحليلها. [`Array(Tuple(String, value_type))`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractKeysAndValues('{"x": {"a": 5, "b": 7, "c": 11}}', 'Int8', 'x') AS res;
```

```response title=Response theme={null}
┌─res────────────────────┐
│ [('a',5),('b',7),('c',11)] │
└────────────────────────┘
```

<div id="JSONExtractKeysAndValuesCaseInsensitive">
  ## JSONExtractKeysAndValuesCaseInsensitive
</div>

تم تقديمها في: v25.8.0

يحلّل أزواج المفتاح-القيمة من JSON باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. تشبه هذه الدالة [`JSONExtractKeysAndValues`](#JSONExtractKeysAndValues).

**البنية**

```sql theme={null}
JSONExtractKeysAndValuesCaseInsensitive(json [, indices_or_keys...], value_type)
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. الفهارس أو المفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون مراعاة حالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)
* `value_type` — نوع بيانات ClickHouse للقيم [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

تعيد مصفوفة من Tuples تحتوي على أزواج مفتاح-قيمة. [`Array(Tuple(String, T))`](/ar/reference/data-types/array)

**أمثلة**

**أساسي**

```sql title=Query theme={null}
SELECT JSONExtractKeysAndValuesCaseInsensitive('{"Name": "Alice", "AGE": 30}', 'String')
```

```response title=Response theme={null}
[('Name','Alice'),('AGE','30')]
```

<div id="JSONExtractKeysAndValuesRaw">
  ## JSONExtractKeysAndValuesRaw
</div>

أُضيفت في: v20.4.0

يعيد مصفوفة من Tuples تتضمن المفاتيح والقيم من كائن JSON. تُمثَّل جميع القيم كسلاسل نصية غير محلَّلة.

**الصياغة**

```sql theme={null}
JSONExtractKeysAndValuesRaw(json[, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تتكوّن من صفر أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

يعيد مصفوفة من قيم Tuple تحتوي على أزواج مفتاح-قيمة محللة، حيث تكون القيم سلاسل غير محللة. [`Array(Tuple(String, String))`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractKeysAndValuesRaw('{"a": [-100, 200.0], "b": "hello"}') AS res;
```

```response title=Response theme={null}
┌─res──────────────────────────────────┐
│ [('a','[-100,200.0]'),('b','"hello"')] │
└──────────────────────────────────────┘
```

<div id="JSONExtractKeysAndValuesRawCaseInsensitive">
  ## JSONExtractKeysAndValuesRawCaseInsensitive
</div>

استُحدث في: v25.8.0

يستخرج أزواج المفتاح والقيمة الخام من JSON باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractKeysAndValuesRaw`](#JSONExtractKeysAndValuesRaw).

**الصياغة**

```sql theme={null}
JSONExtractKeysAndValuesRawCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تعيد مصفوفة من قيم Tuple تحتوي على أزواج مفتاح-قيمة على شكل سلاسل نصية خام. [`Array(Tuple(String, String))`](/ar/reference/data-types/array)

**أمثلة**

**أساسي**

```sql title=Query theme={null}
SELECT JSONExtractKeysAndValuesRawCaseInsensitive('{"Name": "Alice", "AGE": 30}')
```

```response title=Response theme={null}
[('Name','"Alice"'),('AGE','30')]
```

<div id="JSONExtractKeysCaseInsensitive">
  ## JSONExtractKeysCaseInsensitive
</div>

أُضيف في: v25.8.0

يحلّل سلسلة JSON ويستخرج المفاتيح باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة للتنقّل داخل الكائنات المتداخلة. هذه الدالة مشابهة لـ [`JSONExtractKeys`](#JSONExtractKeys).

**البنية**

```sql theme={null}
JSONExtractKeysCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تعيد مصفوفة من المفاتيح من كائن JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT JSONExtractKeysCaseInsensitive('{"Name": "Alice", "AGE": 30}')
```

```response title=Response theme={null}
['Name','AGE']
```

**متداخل**

```sql title=Query theme={null}
SELECT JSONExtractKeysCaseInsensitive('{"User": {"name": "John", "AGE": 25}}', 'user')
```

```response title=Response theme={null}
['name','AGE']
```

<div id="JSONExtractRaw">
  ## JSONExtractRaw
</div>

أُضيف في: v20.1.0

يعيد جزءًا من JSON على هيئة سلسلة غير محلَّلة.

**البنية**

```sql theme={null}
JSONExtractRaw(json[, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُعيد الجزء من JSON كسلسلة غير محلّلة. وإذا لم يكن هذا الجزء موجودًا أو كان من نوع غير صحيح، فستُعاد سلسلة فارغة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') AS res;
```

```response title=Response theme={null}
┌─res──────────────┐
│ [-100,200.0,300] │
└──────────────────┘
```

<div id="JSONExtractRawCaseInsensitive">
  ## JSONExtractRawCaseInsensitive
</div>

أُضيف في: v25.8.0

يعيد جزءًا من JSON على هيئة سلسلة نصية غير محللة باستخدام مطابقة للمفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractRaw`](#JSONExtractRaw).

**البنية**

```sql theme={null}
JSONExtractRawCaseInsensitive(json [, indices_or_keys]...)
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تستخدم المفاتيح مطابقة تتجاهل حالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد سلسلة JSON الخام للعنصر المستخرَج. [`String`](/ar/reference/data-types/string)

**أمثلة**

**كائن**

```sql title=Query theme={null}
SELECT JSONExtractRawCaseInsensitive('{"Object": {"key": "value"}}', 'OBJECT')
```

```response title=Response theme={null}
{"key":"value"}
```

<div id="JSONExtractString">
  ## JSONExtractString
</div>

طُرح في: v20.1.0

يُحلِّل JSON ويستخرج قيمة من نوع String.

**الصيغة**

```sql theme={null}
JSONExtractString(json[, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON المراد تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُعيد قيمة من نوع String إذا كانت موجودة، وإلا فتُعيد سلسلة فارغة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') AS res;
```

```response title=Response theme={null}
┌─res───┐
│ hello │
└───────┘
```

<div id="JSONExtractStringCaseInsensitive">
  ## JSONExtractStringCaseInsensitive
</div>

أُضيفت في: v25.8.0

يُحلّل JSON ويستخرج قيمة نصية باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractString`](#JSONExtractString).

**الصيغة**

```sql theme={null}
JSONExtractStringCaseInsensitive(json [, indices_or_keys]...)
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. وتدعم المفاتيح المطابقة غير الحساسة لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

يعيد قيمة السلسلة المستخرجة، أو سلسلة فارغة إذا لم يتم العثور عليها. [`String`](/ar/reference/data-types/string)

**أمثلة**

**أساسي**

```sql title=Query theme={null}
SELECT JSONExtractStringCaseInsensitive('{"ABC": "def"}', 'abc')
```

```response title=Response theme={null}
def
```

**Nested**

```sql title=Query theme={null}
SELECT JSONExtractStringCaseInsensitive('{"User": {"Name": "John"}}', 'user', 'name')
```

```response title=Response theme={null}
John
```

<div id="JSONExtractUInt">
  ## JSONExtractUInt
</div>

أُضيف في: v20.1.0

يحلّل JSON ويستخرج قيمة من النوع UInt.

**الصياغة**

```sql theme={null}
JSONExtractUInt(json [, indices_or_keys, ...])
```

**الوسيطات**

* `json` — سلسلة JSON المطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُعيد قيمة UInt إذا كانت موجودة، وإلا تُعيد `0`. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONExtractUInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', -1) AS res;
```

```response title=Response theme={null}
┌─res─┐
│ 300 │
└─────┘
```

<div id="JSONExtractUIntCaseInsensitive">
  ## JSONExtractUIntCaseInsensitive
</div>

أُضيف في: v25.8.0

يحلّل JSON ويستخرج قيمة من النوع UInt باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـ [`JSONExtractUInt`](#JSONExtractUInt).

**البنية**

```sql theme={null}
JSONExtractUIntCaseInsensitive(json [, indices_or_keys]...)
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرف [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُرجع قيمة UInt المستخرجة، أو 0 إذا لم يتم العثور عليها أو تعذّر تحويلها. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT JSONExtractUIntCaseInsensitive('{"COUNT": 789}', 'count')
```

```response title=Response theme={null}
789
```

<div id="JSONHas">
  ## JSONHas
</div>

أُضيف في: v20.1.0

يتحقق من وجود القيمة أو القيم المُقدَّمة في مستند JSON.

**البنية**

```sql theme={null}
JSONHas(json[ ,indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المراد تحليلها [`String`](/ar/reference/data-types/string)
* `[ ,indices_or_keys, ...]` — قائمة تضم صفرًا أو أكثر من الوسائط. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُرجع `1` إذا كانت القيمة موجودة في `json`، وإلا فـ`0` [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 1;
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 4) = 0;
```

```response title=Response theme={null}
1
0
```

<div id="JSONKey">
  ## JSONKey
</div>

تم تقديمه في: v20.1.0

يعيد مفتاح حقل في كائن JSON بحسب فهرسه (ابتداءً من 1). إذا مُرِّر JSON كسلسلة نصية، فسيُحلَّل أولًا. الوسيط الثاني هو مسار JSON للتنقل داخل الكائنات المتداخلة. تعيد الدالة اسم المفتاح في الموضع المحدد.

**البنية**

```sql theme={null}
JSONKey(json[, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها. [`String`](/ar/reference/data-types/string)
* `indices_or_keys` — قائمة اختيارية بالفهرسات أو المفاتيح تحدد مسارًا إلى عنصر متداخل. يمكن أن تكون كل وسيطة إما سلسلة نصية (للوصول بالمفتاح) أو عددًا صحيحًا (للوصول بالفهرس بدءًا من 1). [`String`](/ar/reference/data-types/string) أو [`Int*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد اسم المفتاح عند الموضع المحدد داخل كائن JSON. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
```

```response title=Response theme={null}
a
```

<div id="JSONLength">
  ## JSONLength
</div>

ظهر في: v20.1.0

يُرجع طول مصفوفة JSON أو كائن JSON.
إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح، فستُعاد القيمة `0`.

**البنية**

```sql theme={null}
JSONLength(json [, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المراد تحليلها [`String`](/ar/reference/data-types/string)
* `[, indices_or_keys, ...]` — اختياري. قائمة تتضمن صفرًا أو أكثر من الوسائط. [`String`](/ar/reference/data-types/string) أو [`(U)Int8/16/32/64`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

يُرجع طول مصفوفة JSON أو كائن JSON، وإلا فيُرجع `0` إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 3;
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}') = 2;
```

```response title=Response theme={null}
1
1
```

<div id="JSONMergePatch">
  ## JSONMergePatch
</div>

أُضيف في: v23.10.0

يعيد سلسلة كائن JSON مدمجة ناتجة عن دمج عدة كائنات JSON.

**الصيغة**

```sql theme={null}
JSONMergePatch(json1[, json2, ...])
```

**الأسماء المستعارة**: `jsonMergePatch`

**المعاملات**

* `json1[, json2, ...]` — سلسلة واحدة أو أكثر تحتوي على JSON صالح. [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يعيد سلسلة JSON للكائن المدمج، إذا كانت سلاسل كائنات JSON صالحة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT JSONMergePatch('{"a":1}', '{"name": "joey"}', '{"name": "tom"}', '{"name": "zoey"}') AS res;
```

```response title=Response theme={null}
┌─res───────────────────┐
│ {"a":1,"name":"zoey"} │
└───────────────────────┘
```

<div id="JSONSharedDataPaths">
  ## JSONSharedDataPaths
</div>

قُدِّمت في: v24.8.0

يعيد قائمة المسارات المخزَّنة في بنية البيانات المشتركة ضمن عمود JSON.

**الصياغة**

```sql theme={null}
JSONSharedDataPaths(json)
```

**الوسائط**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

تُرجع مصفوفة من المسارات المخزّنة في بنية البيانات المشتركة ضمن عمود JSON. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONSharedDataPaths(json)─┐
│ {"a":"42"}                           │ []                        │
│ {"b":"Hello"}                        │ ['b']                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['c']                     │
└──────────────────────────────────────┴───────────────────────────┘
```

<div id="JSONSharedDataPathsWithTypes">
  ## JSONSharedDataPathsWithTypes
</div>

أُضيفت في: v24.8.0

تعيد قائمة بالمسارات المخزَّنة في بنية البيانات المشتركة وأنواعها في كل صف ضمن عمود JSON.

**الصياغة**

```sql theme={null}
JSONSharedDataPathsWithTypes(json)
```

**الوسائط**

* `json` — عمود JSON. [`JSON`](/ar/reference/data-types/newjson)

**القيمة المُعادة**

يعيد خريطةً للمسارات المخزّنة في بنية البيانات المشتركة وأنواع بياناتها ضمن عمود JSON. [`Map(String, String)`](/ar/reference/data-types/map)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─json─────────────────────────────────┬─JSONSharedDataPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {}                                  │
│ {"b":"Hello"}                        │ {'b':'String'}                      │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'c':'Date'}                        │
└──────────────────────────────────────┴─────────────────────────────────────┘
```

<div id="JSONType">
  ## JSONType
</div>

استُحدث في: v20.1.0

يعيد نوع قيمة JSON. وإذا لم تكن القيمة موجودة، فستتم إعادة `Null=0`.

**البنية**

```sql theme={null}
JSONType(json[, indices_or_keys, ...])
```

**الوسائط**

* `json` — سلسلة JSON المطلوب تحليلها [`String`](/ar/reference/data-types/string)
* `json[, indices_or_keys, ...]` — قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا. [`String`](/ar/reference/data-types/string) أو [`(U)Int8/16/32/64`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

يُرجع نوع قيمة JSON كسلسلة نصية، وإذا لم تكن القيمة موجودة، فسيُرجع `Null=0` [`Enum`](/ar/reference/data-types/enum)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
1
1
1
```

<div id="JSON_EXISTS">
  ## JSON\_EXISTS
</div>

أُضيف في: v21.8.0

إذا كانت القيمة موجودة في مستند JSON، فستُعاد `1`.
إذا لم تكن القيمة موجودة، فستُعاد `0`.

**البنية**

```sql theme={null}
JSON_EXISTS(json, path)
```

**الوسائط**

* `json` — سلسلة نصية تحتوي على JSON صالح. [`String`](/ar/reference/data-types/string)
* `path` — سلسلة نصية تمثل المسار. [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يعيد `1` إذا كانت القيمة موجودة في مستند JSON، وإلا فيعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─JSON_EXISTS(⋯ '$.hello')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯llo.world')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[*]')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[0]')─┐
│                        1 │
└──────────────────────────┘
```

<div id="JSON_QUERY">
  ## JSON\_QUERY
</div>

أُضيف في: v21.8.0

يُحلِّل JSON ويستخرج قيمةً بصيغة مصفوفة JSON أو كائن JSON.
إذا لم تكن القيمة موجودة، فسيُعاد نص فارغ.

**الصيغة**

```sql theme={null}
JSON_QUERY(json, path)
```

**المعاملات**

* `json` — سلسلة نصية بتنسيق JSON صالح. [`String`](/ar/reference/data-types/string)
* `path` — سلسلة نصية تمثل المسار. [`String`](/ar/reference/data-types/string)

**القيمة المعادة**

تعيد مصفوفة JSON أو كائن JSON المستخرَجَين على هيئة سلسلة نصية، أو سلسلة نصية فارغة إذا لم تكن القيمة موجودة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
["world"]
[0, 1, 4, 0, -1, -4]
[2]
String
```

<div id="JSON_VALUE">
  ## JSON\_VALUE
</div>

أُضيفت في: 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`، ستُعاد القيمة المعقّدة.

**الصياغة**

```sql theme={null}
JSON_VALUE(json, path)
```

**الوسيطات**

* `json` — سلسلة نصية تحتوي على JSON صالح. [`String`](/ar/reference/data-types/string)
* `path` — سلسلة نصية تمثل المسار. [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يعيد القيمة القياسية المستخرجة من JSON كسلسلة نصية، أو سلسلة فارغة إذا لم تكن القيمة موجودة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
world
0
2
ᴺᵁᴸᴸ
```

<div id="dynamicElement">
  ## dynamicElement
</div>

أُضيفت في: v24.1.0

تستخرج عمودًا بالنوع المحدد من عمود `Dynamic`.

تتيح لك هذه الدالة استخراج قيم من نوع محدد من عمود Dynamic. إذا كان الصف يحتوي على قيمة
من النوع المطلوب، فإنها تُرجع تلك القيمة. وإذا كان الصف يحتوي على نوع مختلف أو NULL، فإنها تُرجع NULL
للأنواع المفردة أو مصفوفة فارغة لأنواع المصفوفات.

**الصيغة**

```sql theme={null}
dynamicElement(dynamic, type_name)
```

**الوسيطات**

* `dynamic` — عمود Dynamic المراد الاستخراج منه. [`Dynamic`](/ar/reference/data-types/dynamic)
* `type_name` — اسم النوع المراد استخراجه من بين الأنواع الممكنة (مثل: 'String' و'Int64' و'Array(Int64)').

**القيمة المُعادة**

يعيد قيمًا من النوع المحدد من عمود Dynamic. ويعيد NULL للأنواع غير المطابقة (أو مصفوفة فارغة للأنواع من نوع Array). [`Any`](/ar/reference/data-types/index)

**أمثلة**

**استخراج أنواع مختلفة من عمود Dynamic**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─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]                           │                      ᴺᵁᴸᴸ │ []                                 │
└───────────────┴────────────────┴─────────────────────────────┴────────────────────────────┴───────────────────────────────────┴───────────────────────────┴────────────────────────────────────┘
```

<div id="dynamicType">
  ## dynamicType
</div>

أُضيف في: v24.1.0

يعيد اسم النوع الفعلي لكل صف في عمود `Dynamic`.

بالنسبة إلى الصفوف التي تحتوي على NULL، تُعيد الدالة 'None'. أما في جميع الصفوف الأخرى، فتُعيد نوع البيانات الفعلي
المخزَّن في ذلك الصف من عمود Dynamic (على سبيل المثال: 'Int64' و'String' و'Array(Int64)').

**البنية**

```sql theme={null}
dynamicType(dynamic)
```

**الوسائط**

* `dynamic` — عمود Dynamic المطلوب فحصه. [`Dynamic`](/ar/reference/data-types/dynamic)

**القيمة المعادة**

تُرجع اسم نوع القيمة المخزنة في كل صف، أو 'None' لقيم NULL. [`String`](/ar/reference/data-types/string)

**أمثلة**

**فحص الأنواع في عمود Dynamic**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─d─────────────┬─dynamicType(d)─┐
│ ᴺᵁᴸᴸ          │ None           │
│ 42            │ Int64          │
│ Hello, World! │ String         │
│ [1,2,3]       │ Array(Int64)   │
└───────────────┴────────────────┘
```

<div id="isDynamicElementInSharedData">
  ## isDynamicElementInSharedData
</div>

أُضيف في: v24.1.0

يعيد `true` للصفوف في عمود Dynamic المخزَّنة بتنسيق Variant المشترك بدلًا من تخزينها كأعمدة فرعية منفصلة.

عندما يكون لعمود Dynamic حد `max_types`، فإن القيم التي تتجاوز هذا الحد تُخزَّن بتنسيق ثنائي مشترك
بدلًا من فصلها إلى أعمدة فرعية منفصلة بحسب النوع. تحدد هذه الدالة الصفوف المخزَّنة بهذا التنسيق المشترك.

**الصيغة**

```sql theme={null}
isDynamicElementInSharedData(dynamic)
```

**الوسيطات**

* `dynamic` — عمود Dynamic المراد فحصه. [`Dynamic`](/ar/reference/data-types/dynamic)

**القيمة المُعادة**

تُرجِع `true` إذا كانت القيمة مخزّنة بتنسيق shared variant format، و`false` إذا كانت مخزّنة كعمود فرعي منفصل أو كانت `NULL`. [`Bool`](/ar/reference/data-types/boolean)

**أمثلة**

**التحقق من تنسيق التخزين في عمود Dynamic مع حد max\_types**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─d─────────────┬─isDynamicElementInSharedData(d)─┐
│ ᴺᵁᴸᴸ          │ false                           │
│ 42            │ false                           │
│ Hello, World! │ true                            │
│ [1,2,3]       │ true                            │
└───────────────┴─────────────────────────────────┘
```

<div id="isValidJSON">
  ## isValidJSON
</div>

أُضيف في: v20.1.0

يتحقق من أن السلسلة النصية المُمرَّرة بتنسيق JSON صالح.

**الصيغة**

```sql theme={null}
isValidJSON(json)
```

**المعاملات**

* `json` — سلسلة JSON المطلوب التحقق من صحتها [`String`](/ar/reference/data-types/string)

**القيمة المُعادة**

يعيد `1` إذا كانت السلسلة JSON صالحة، وإلا `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT isValidJSON('{"a": "hello", "b": [-100, 200.0, 300]}') = 1;
SELECT isValidJSON('not JSON') = 0;
```

```response title=Response theme={null}
1
0
```

**استخدام الأعداد الصحيحة للوصول إلى مصفوفات JSON وكائنات JSON**

```sql title=Query theme={null}
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 title=Response theme={null}
0
1
1
1
1
1
0
```

<div id="prettyPrintJSON">
  ## prettyPrintJSON
</div>

أُضيفت في: v26.4.0

يعيد نسخة منسّقة من سلسلة JSON، مع أسطر جديدة ومسافات بادئة.

**البنية**

```sql theme={null}
prettyPrintJSON(json [, indent])
```

**الوسائط**

* `json` — سلسلة JSON صالحة لتنسيقها. [`String`](/ar/reference/data-types/string)
* `indent` — عدد المسافات لكل مستوى من الإزاحة. الافتراضي: 4. الحد الأقصى: 32 [`UInt*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

سلسلة JSON منسّقة لسهولة القراءة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**كائن بسيط**

```sql title=Query theme={null}
SELECT prettyPrintJSON('{"a":1,"b":"hello"}');
```

```response title=Response theme={null}
{
    "a": 1,
    "b": "hello"
}
```

**مسافة بادئة مخصّصة**

```sql title=Query theme={null}
SELECT prettyPrintJSON('{"a":1}', 8);
```

```response title=Response theme={null}
{
        "a": 1
}
```

<div id="simpleJSONExtractBool">
  ## simpleJSONExtractBool
</div>

أُضيف في: v21.4.0

يحلّل قيمة `true`/`false` من قيمة الحقل المسمّى `field_name`.
النتيجة هي `UInt8`.

**البنية**

```sql theme={null}
simpleJSONExtractBool(json, field_name)
```

**الأسماء البديلة**: `visitParamExtractBool`

**الوسيطات**

* `json` — بيانات JSON التي يُبحث فيها عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المطلوب البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المعادة**

تعيد `1` إذا كانت قيمة الحقل هي `true`، وإلا فتعيد `0`. وهذا يعني أن هذه الدالة ستُعيد `0` أيضًا في الحالات التالية، وليس في هذه الحالات فقط:

* إذا كان الحقل غير موجود.
* إذا كان الحقل يحتوي على `true` كسلسلة نصية، على سبيل المثال: `{"field":"true"}`.
* إذا كان الحقل يحتوي على `1` كقيمة رقمية. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
0
1
0
0
```

<div id="simpleJSONExtractFloat">
  ## simpleJSONExtractFloat
</div>

أُضيف في: v21.4.0

يحلّل قيمة `Float64` من قيمة الحقل المسمّى `field_name`.
إذا كان `field_name` حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فسيُعيد `0`.

**الصياغة**

```sql theme={null}
simpleJSONExtractFloat(json, field_name)
```

**الأسماء المستعارة**: `visitParamExtractFloat`

**المعاملات**

* `json` — مستند JSON الذي يُبحث فيه عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المُعادة**

ترجع الرقم المستخرَج من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وإلا فترجع `0`. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
0
-4000
0
-3.4
5
```

<div id="simpleJSONExtractInt">
  ## simpleJSONExtractInt
</div>

قُدِّم في: v21.4.0

يحلّل قيمة `Int64` من قيمة الحقل المسمّى `field_name`.
إذا كان `field_name` حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا ولكنه لا يحتوي على رقم، فستُعاد القيمة `0`.

**الصياغة**

```sql theme={null}
simpleJSONExtractInt(json, field_name)
```

**الأسماء المستعارة**: `visitParamExtractInt`

**المعاملات**

* `json` — ‏JSON الذي يُبحث فيه عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المعادة**

يعيد الرقم الذي جرى تحليله من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وإلا فيُعيد `0` [`Int64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
0
-4
0
-3
5
```

<div id="simpleJSONExtractRaw">
  ## simpleJSONExtractRaw
</div>

أُضيف في: v21.4.0

يعيد قيمة الحقل المسمى `field_name` كسلسلة `String`، بما في ذلك الفواصل.

**الصياغة**

```sql theme={null}
simpleJSONExtractRaw(json, field_name)
```

**الأسماء المستعارة**: `visitParamExtractRaw`

**الوسيطات**

* `json` — نص JSON الذي يُبحث فيه عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المعادة**

تعيد قيمة الحقل كسلسلة نصية، بما في ذلك الفواصل إذا كان الحقل موجودًا، أو سلسلة نصية فارغة بخلاف ذلك [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
"-4e3"
-3.4
5
{"def":[1,2,3]}
```

<div id="simpleJSONExtractString">
  ## simpleJSONExtractString
</div>

أُضيفت في: v21.4.0

يحلّل قيمة `String` محاطة بعلامتَي اقتباس مزدوجتين من قيمة الحقل المسمّى `field_name`.

**تفاصيل التنفيذ**

لا يوجد حاليًا دعم لنقاط الرمز بالتنسيق `\uXXXX\uYYYY` التي لا تنتمي إلى المستوى الأساسي متعدد اللغات (إذ تُحوَّل إلى CESU-8 بدلًا من UTF-8).

**الصياغة**

```sql theme={null}
simpleJSONExtractString(json, field_name)
```

**الأسماء البديلة**: `visitParamExtractString`

**الوسيطات**

* `json` — قيمة JSON التي يُبحث فيها عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المُعادة**

تُعيد قيمة الحقل كسلسلة نصية بعد فك الإفلات، بما في ذلك الفواصل. وتُعاد سلسلة نصية فارغة إذا لم يكن الحقل يحتوي على سلسلة نصية محاطة بعلامتي اقتباس مزدوجتين، أو إذا تعذّر فك الإفلات، أو إذا لم يكن الحقل موجودًا [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
\n\0

☺
```

<div id="simpleJSONExtractUInt">
  ## simpleJSONExtractUInt
</div>

تم تقديمه في: v21.4.0

يستخرج قيمة `UInt64` من قيمة الحقل المسمّى `field_name`.
إذا كان `field_name` حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فستُعاد القيمة `0`.

**الصيغة**

```sql theme={null}
simpleJSONExtractUInt(json, field_name)
```

**الأسماء البديلة**: `visitParamExtractUInt`

**الوسيطات**

* `json` — كائن JSON الذي يُبحث فيه عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المعادة**

تعيد الرقم الذي تم تحليله من الحقل إذا كان الحقل موجودًا ويحتوي على رقم، وتعيد `0` بخلاف ذلك [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
0
4
0
3
5
```

<div id="simpleJSONHas">
  ## simpleJSONHas
</div>

أُضيف في: v21.4.0

يتحقق مما إذا كان هناك حقل باسم `field_name`.

**البنية**

```sql theme={null}
simpleJSONHas(json, field_name)
```

**الأسماء المستعارة**: `visitParamHas`

**الوسائط**

* `json` — قيمة JSON التي يُبحث فيها عن الحقل. [`String`](/ar/reference/data-types/string)
* `field_name` — اسم الحقل المراد البحث عنه. [`const String`](/ar/reference/data-types/string)

**القيمة المعادة**

يعيد `1` إذا كان الحقل موجودًا، وإلا فيُعيد `0` [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
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 title=Response theme={null}
1
0
```

<div id="toJSONString">
  ## toJSONString
</div>

أُضيف في: v21.7.0

يحوِّل قيمة إلى تمثيلها بتنسيق JSON. وتُدعَم أنواع البيانات المختلفة والبُنى المتداخلة.
تُحاط [الأعداد الصحيحة](/ar/reference/data-types/int-uint) بطول 64 بت أو أكثر (مثل `UInt64` أو `Int128`) بعلامات اقتباس افتراضيًا. ويحدّد [output\_format\_json\_quote\_64bit\_integers](/ar/reference/settings/formats#output_format_json_quote_64bit_integers) هذا السلوك.
تُستبدل القيم الخاصة `NaN` و `inf` بـ `null`. فعِّل الإعداد [output\_format\_json\_quote\_denormals](/ar/reference/settings/formats#output_format_json_quote_denormals) لإظهارها.
عند تحويل قيمة [Enum](/ar/reference/data-types/enum)، تُخرج الدالة اسمها.

انظر أيضًا:

* [output\_format\_json\_quote\_64bit\_integers](/ar/reference/settings/formats#output_format_json_quote_64bit_integers)
* [output\_format\_json\_quote\_denormals](/ar/reference/settings/formats#output_format_json_quote_denormals)

**البنية**

```sql theme={null}
toJSONString(value)
```

**الوسيطات**

* `value` — القيمة المطلوب إجراء تسلسل لها. يمكن أن تكون القيمة من أي نوع بيانات. [`Any`](/ar/reference/data-types/index)

**القيمة المُعادة**

تعيد التمثيل بصيغة JSON للقيمة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تسلسل Map**

```sql title=Query theme={null}
SELECT toJSONString(map('key1', 1, 'key2', 2));
```

```response title=Response theme={null}
┌─toJSONString(map('key1', 1, 'key2', 2))─┐
│ {"key1":1,"key2":2}                     │
└─────────────────────────────────────────┘
```

**قيم خاصة**

```sql title=Query theme={null}
SELECT toJSONString(tuple(1.25, NULL, NaN, +inf, -inf, [])) SETTINGS output_format_json_quote_denormals = 1;
```

```response title=Response theme={null}
┌─toJSONString(tuple(1.25, NULL, NaN, plus(inf), minus(inf), []))─┐
│ [1.25,null,"nan","inf","-inf",[]]                               │
└─────────────────────────────────────────────────────────────────┘
```
