دوال المصفوفات
| الاسم | الوصف |
ARRAY
|
تعرض هذه الدالة ARRAY تحتوي على عنصر واحد لكل وسيط إدخال
|
ARRAY_CONCAT
|
تدمج هذه الدالة عدة صفائف في صفيفة واحدة ARRAY
|
ARRAY_CONTAINS
|
تعرض القيمة TRUE إذا كان ARRAY معيّنًا يحتوي على قيمة معيّنة
|
ARRAY_CONTAINS_ALL
|
تعرض TRUE إذا كانت جميع القيم متوفّرة في ARRAY
|
ARRAY_CONTAINS_ANY
|
تعرض TRUE إذا كانت أي من القيم متوفّرة في ARRAY
|
ARRAY_FILTER
|
فلترة العناصر من ARRAY التي لا تستوفي شرطًا
|
ARRAY_FIRST
|
تعرض هذه الدالة العنصر الأول في ARRAY
|
ARRAY_FIRST_N
|
تعرض هذه الدالة أول n عنصر في ARRAY
|
ARRAY_GET
|
تعرض هذه الدالة العنصر في فهرس معيّن في ARRAY
|
ARRAY_INDEX_OF
|
تعرِض هذه الدالة فهرس أول ظهور لقيمة في ARRAY
|
ARRAY_INDEX_OF_ALL
|
تعرض جميع فهارس قيمة في ARRAY
|
ARRAY_LENGTH
|
تعرِض هذه الدالة عدد العناصر في ARRAY
|
ARRAY_LAST
|
تعرض هذه الدالة العنصر الأخير في ARRAY
|
ARRAY_LAST_N
|
عرض آخر n عناصر في ARRAY
|
ARRAY_REVERSE
|
تعكس ترتيب العناصر في ARRAY
|
ARRAY_SLICE
|
تعرض هذه الدالة شريحة من ARRAY
|
ARRAY_TRANSFORM
|
تحويل العناصر في ARRAY من خلال تطبيق تعبير على كل عنصر
|
MAXIMUM
|
تعرض الحد الأقصى للقيمة في ARRAY
|
MAXIMUM_N
|
تعرض الدالة n أكبر قيم في ARRAY
|
MINIMUM
|
تعرض الحد الأدنى للقيمة في ARRAY
|
MINIMUM_N
|
تعرض الدالة n أصغر قيم في ARRAY
|
SUM
|
تعرض هذه الدالة مجموع كل قيم NUMERIC في ARRAY.
|
JOIN
|
تنتج هذه الدالة تسلسلاً من العناصر في ARRAY كقيمة STRING.
|
ARRAY
البنية:
array(values: ANY...) -> ARRAY
الوصف:
تنشئ هذه الدالة صفيفًا من العناصر المحددة.
- إذا لم تكن هناك وسيطة، يتم استبدالها بـ
NULLفي الصفيف الناتج.
أمثلة:
| values | array(values) |
|---|---|
| () | [] |
| (1, 2, 3) | [1, 2, 3] |
| ("a", 1, true) | ["a", 1, true] |
| (1, null) | [1, null] |
| (1, [2, 3]) | [1, [2, 3]] |
ARRAY_CONCAT
البنية:
array_concat(arrays: ARRAY...) -> ARRAY
الوصف:
تدمج هذه الدالة صفيفتين أو أكثر في ARRAY واحدة.
أمثلة:
| الصفائف | array_concat(arrays) |
|---|---|
| ([1, 2], [3, 4]) | [1, 2, 3, 4] |
| (["a", "b"], ["c"]) | ["a", "b", "c"] |
| ([1], [2], [3]) | [1, 2, 3] |
| ([], [1, 2]) | [1, 2] |
Node.js
const result = await db.pipeline() .collection("books") .select(field("genre").arrayConcat([field("subGenre")]).as("allGenres")) .execute();
Swift
let result = try await db.pipeline() .collection("books") .select([Field("genre").arrayConcat([Field("subGenre")]).as("allGenres")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("genre").array_concat(Field.of("subGenre")).as_("allGenres")) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(arrayConcat(field("genre"), field("subGenre")).as("allGenres")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayConcat(firestore.FieldOf("genre"), firestore.FieldOf("subGenre")).As("allGenres"), )). Execute(ctx)
ARRAY_CONTAINS
البنية:
array_contains(array: ARRAY, value: ANY) -> BOOLEAN
الوصف:
تعرِض TRUE إذا تم العثور على value في array، وتعرض FALSE في الحالات الأخرى.
أمثلة:
| مصفوفة | القيمة | array_contains(array, value) |
|---|---|---|
| [1, 2, 3] | 2 | صحيح |
| [[1, 2], [3]] | [1, 2] | صحيح |
| [1, null] | قيمة فارغة | صحيح |
| "abc" | أي سعر | خطأ |
Node.js
const result = await db.pipeline() .collection("books") .select(field("genre").arrayContains(constant("mystery")).as("isMystery")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("genre").arrayContains(constant("mystery")).as("isMystery")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("genre").arrayContains(Constant("mystery")).as("isMystery")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("genre").arrayContains("mystery").alias("isMystery")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayContains("mystery").alias("isMystery")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("genre").array_contains("mystery").as_("isMystery")) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(arrayContains(field("genre"), "mystery").as("isMystery")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayContains(firestore.FieldOf("genre"), "mystery").As("isMystery"), )). Execute(ctx)
ARRAY_CONTAINS_ALL
البنية:
array_contains_all(array: ARRAY, search_values: ARRAY) -> BOOLEAN
الوصف:
تعرِض TRUE إذا تم العثور على كل search_values في array، وFALSE في الحالات الأخرى.
أمثلة:
| مصفوفة | قيم_البحث | array_contains_all(array, search_values) |
|---|---|---|
| [1, 2, 3] | [1, 2] | صحيح |
| [1, 2, 3] | [1, 4] | خطأ |
| [1, null] | [فارغ] | صحيح |
| [NaN] | [NaN] | صحيح |
| [] | [] | صحيح |
| [1, 2, 3] | [] | صحيح |
Node.js
const result = await db.pipeline() .collection("books") .select( field("genre") .arrayContainsAll([constant("fantasy"), constant("adventure")]) .as("isFantasyAdventure") ) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select( field("genre") .arrayContainsAll([constant("fantasy"), constant("adventure")]) .as("isFantasyAdventure") ) );
Swift
let result = try await db.pipeline() .collection("books") .select([ Field("genre") .arrayContainsAll([Constant("fantasy"), Constant("adventure")]) .as("isFantasyAdventure") ]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select( field("genre") .arrayContainsAll(listOf("fantasy", "adventure")) .alias("isFantasyAdventure") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select( field("genre") .arrayContainsAll(Arrays.asList("fantasy", "adventure")) .alias("isFantasyAdventure") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select( Field.of("genre") .array_contains_all(["fantasy", "adventure"]) .as_("isFantasyAdventure") ) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select( arrayContainsAll(field("genre"), Arrays.asList("fantasy", "adventure")) .as("isFantasyAdventure")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayContainsAll(firestore.FieldOf("genre"), []string{"fantasy", "adventure"}).As("isFantasyAdventure"), )). Execute(ctx)
ARRAY_CONTAINS_ANY
البنية:
array_contains_any(array: ARRAY, search_values: ARRAY) -> BOOLEAN
الوصف:
تعرِض TRUE إذا تم العثور على أي من search_values في array، وتعرض FALSE في الحالات الأخرى.
أمثلة:
| مصفوفة | قيم_البحث | array_contains_any(array, search_values) |
|---|---|---|
| [1, 2, 3] | [4, 1] | صحيح |
| [1, 2, 3] | [4, 5] | خطأ |
| [1, 2, null] | [فارغ] | صحيح |
Node.js
const result = await db.pipeline() .collection("books") .select( field("genre") .arrayContainsAny([constant("fantasy"), constant("nonfiction")]) .as("isMysteryOrFantasy") ) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select( field("genre") .arrayContainsAny([constant("fantasy"), constant("nonfiction")]) .as("isMysteryOrFantasy") ) );
Swift
let result = try await db.pipeline() .collection("books") .select([ Field("genre") .arrayContainsAny([Constant("fantasy"), Constant("nonfiction")]) .as("isMysteryOrFantasy") ]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select( field("genre") .arrayContainsAny(listOf("fantasy", "nonfiction")) .alias("isMysteryOrFantasy") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select( field("genre") .arrayContainsAny(Arrays.asList("fantasy", "nonfiction")) .alias("isMysteryOrFantasy") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select( Field.of("genre") .array_contains_any(["fantasy", "nonfiction"]) .as_("isMysteryOrFantasy") ) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select( arrayContainsAny(field("genre"), Arrays.asList("fantasy", "nonfiction")) .as("isMysteryOrFantasy")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayContainsAny(firestore.FieldOf("genre"), []string{"fantasy", "nonfiction"}).As("isMysteryOrFantasy"), )). Execute(ctx)
ARRAY_FILTER
البنية:
array_filter(array: ARRAY, predicate: (ANY) -> BOOLEAN) -> ARRAY
الوصف:
تُستخدَم الفلاتر array باستخدام تعبير predicate، ما يؤدي إلى عرض مصفوفة جديدة تتضمّن العناصر التي تستوفي الشرط فقط.
- يتم تقييم
predicateلكل عنصر فيarray. إذا عرضت الدالة القيمةtrue، يتم تضمين العنصر في النتيجة، وإلا (إذا عرضت القيمةfalseأوnull)، يتم استبعاده. - إذا تم تقييم
predicateعلى أنّه قيمة غير منطقية أو غير فارغة، ستعرض الدالة خطأ.
أمثلة:
| مصفوفة | الشرط | array_filter(array, predicate) |
|---|---|---|
| [1, 2, 3] | x -> x > 1 | [2, 3] |
| [1, null, 3] | x -> x > 1 | [3] |
| ["a", "b", "c"] | x -> x != "b" | ["a", "c"] |
| [] | x -> true | [] |
ARRAY_GET
البنية:
array_get(array: ARRAY, index: INT64) -> ANY
الوصف:
تعرض هذه الدالة العنصر في الموضع index المستند إلى 0 في array.
- إذا كانت قيمة
indexسالبة، يتم الوصول إلى العناصر من نهاية المصفوفة، حيث يكون-1هو العنصر الأخير. - إذا لم يكن
arrayمن النوعARRAYولم يكنnull، يتم عرض رسالة خطأ. - إذا كان
indexخارج الحدود، تعرض الدالة قيمة غير متوفّرة. - إذا لم يكن
indexمن النوعINT64، ستعرض الدالة خطأ.
أمثلة:
| مصفوفة | الفهرس | array_get(array, index) |
|---|---|---|
| [1, 2, 3] | 0 | 1 |
| [1, 2, 3] | -1 | 3 |
| [1, 2, 3] | 3 | غياب |
| [1, 2, 3] | -4 | غياب |
| "abc" | 0 | خطأ |
| قيمة فارغة | 0 | قيمة فارغة |
Array |
"a" | خطأ |
Array |
2.0 | خطأ |
ARRAY_LENGTH
البنية:
array_length(array: ARRAY) -> INT64
الوصف:
تعرِض هذه الدالة عدد العناصر في array.
أمثلة:
| مصفوفة | array_length(array) |
|---|---|
| [1, 2, 3] | 3 |
| [] | 0 |
| [1, 1, 1] | 3 |
| [1, null] | 2 |
Node.js
const result = await db.pipeline() .collection("books") .select(field("genre").arrayLength().as("genreCount")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("genre").arrayLength().as("genreCount")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("genre").arrayLength().as("genreCount")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("genre").arrayLength().alias("genreCount")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayLength().alias("genreCount")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("genre").array_length().as_("genreCount")) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(arrayLength(field("genre")).as("genreCount")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayLength(firestore.FieldOf("genre")).As("genreCount"), )). Execute(ctx)
ARRAY_REVERSE
البنية:
array_reverse(array: ARRAY) -> ARRAY
الوصف:
تعكس هذه الدالة array المحدّدة.
أمثلة:
| مصفوفة | array_reverse(array) |
|---|---|
| [1, 2, 3] | [3, 2, 1] |
| ["a", "b"] | ["b", "a"] |
| [1, 2, 2, 3] | [3, 2, 2, 1] |
Node.js
const result = await db.pipeline() .collection("books") .select(arrayReverse(field("genre")).as("reversedGenres")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("genre").arrayReverse().as("reversedGenres")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("genre").arrayReverse().as("reversedGenres")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("genre").arrayReverse().alias("reversedGenres")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayReverse().alias("reversedGenres")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("genre").array_reverse().as_("reversedGenres")) .execute() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(arrayReverse(field("genre")).as("reversedGenres")) .execute() .get();
متابعة
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.ArrayReverse(firestore.FieldOf("genre")).As("reversedGenres"), )). Execute(ctx)
ARRAY_FIRST
البنية:
array_first(array: ARRAY) -> ANY
الوصف:
تعرِض هذه الدالة العنصر الأول في array. هذا الرمز مكافئ للرمز array_get(array, 0).
- إذا كان
arrayفارغًا، يتم عرض قيمة غير متوفّرة.
أمثلة:
| مصفوفة | array_first(array) |
|---|---|
| [1, 2, 3] | 1 |
| [] | غياب |
ARRAY_FIRST_N
البنية:
array_first_n(array: ARRAY, n: INT64) -> ARRAY
الوصف:
تعرِض هذه الدالة أول n عناصر من array. هذا الرمز مكافئ للرمز array_slice(array, 0, n).
- إذا كانت قيمة
nسالبة، يتم عرض رسالة خطأ.
أمثلة:
| مصفوفة | n | array_first_n(array, n) |
|---|---|---|
| [1, 2, 3, 4, 5] | 3 | [1, 2, 3] |
| [1, 2] | 3 | [1, 2] |
| [1, 2, 3] | 0 | [] |
ARRAY_INDEX_OF
البنية:
array_index_of(array: ARRAY, value: ANY) -> INT64
الوصف:
تعرِض هذه الدالة الفهرس المستند إلى الرقم 0 لأول تكرار لـ value في array. تعرِض الدالة القيمة -1 في حال عدم العثور على value.
أمثلة:
| مصفوفة | القيمة | array_index_of(array, value) |
|---|---|---|
| [1, 2, 3, 2] | 2 | 1 |
| [1, 2, 3] | 4 | -1 |
| [1, null, 3] | قيمة فارغة | 1 |
ARRAY_INDEX_OF_ALL
البنية:
array_index_of_all(array: ARRAY, value: ANY) -> ARRAY<INT64>
الوصف:
تعرض هذه الدالة مصفوفة تحتوي على الفهارس المستندة إلى 0 لجميع تكرارات value في array. تعرض الدالة [] إذا لم يتم العثور على value.
أمثلة:
| مصفوفة | القيمة | array_index_of_all(array, value) |
|---|---|---|
| [1, 2, 3, 2] | 2 | [1, 3] |
| [1, 2, 3] | 4 | [] |
| [1, null, 3, null] | قيمة فارغة | [1, 3] |
ARRAY_LAST
البنية:
array_last(array: ARRAY) -> ANY
الوصف:
تعرض هذه الدالة العنصر الأخير في array. هذا الرمز مكافئ للرمز array_get(array, -1).
- إذا كان
arrayفارغًا، يتم عرض قيمة غير متوفّرة.
أمثلة:
| مصفوفة | array_last(array) |
|---|---|
| [1, 2, 3] | 3 |
| [] | غياب |
ARRAY_LAST_N
البنية:
array_last_n(array: ARRAY, n: INT64) -> ARRAY
الوصف:
تعرض هذه الدالة آخر n عناصر من array.
- إذا كانت قيمة
nسالبة، يتم عرض رسالة خطأ.
أمثلة:
| مصفوفة | n | array_last_n(array, n) |
|---|---|---|
| [1, 2, 3, 4, 5] | 3 | [3, 4, 5] |
| [1, 2] | 3 | [1, 2] |
| [1, 2, 3] | 0 | [] |
ARRAY_SLICE
البنية:
array_slice(array: ARRAY, offset: INT64, length: INT64) -> ARRAY
الوصف:
تعرض مجموعة فرعية من array تبدأ بالفهرس offset المستند إلى الرقم 0، وتتضمّن length عنصرًا.
- إذا كانت قيمة
offsetسالبة، يشير ذلك إلى موضع البدء من نهاية المصفوفة، ويكون-1هو العنصر الأخير. - إذا كانت قيمة
lengthأكبر من عدد العناصر المتبقية في الصفيفة بعدoffset، تمتد النتيجة إلى نهاية الصفيفة. - يجب أن تكون قيمة
lengthغير سالبة، وإلا سيتم عرض رسالة خطأ.
أمثلة:
| مصفوفة | offset | الطول | array_slice(array, offset, length) |
|---|---|---|---|
| [1, 2, 3, 4, 5] | 1 | 3 | [2, 3, 4] |
| [1, 2, 3, 4, 5] | -2 | 2 | [4, 5] |
| [1, 2, 3] | 1 | 5 | [2, 3] |
| [1, 2, 3] | 3 | 2 | [] |
ARRAY_TRANSFORM
البنية:
array_transform(array: ARRAY, expression: (ANY) -> ANY) -> ARRAY
array_transform(array: ARRAY, expression: (ANY, INT64) -> ANY) -> ARRAY
الوصف:
تحوِّل الدالة array من خلال تطبيق expression على كل عنصر، وتعرض صفيفًا جديدًا يتضمّن العناصر المحوَّلة. سيكون حجم مصفوفة الإخراج دائمًا هو نفسه حجم مصفوفة الإدخال.
- يمكن أن تكون
expressionدالة أحاديةelement -> resultأو دالة ثنائية(element, index) -> result. - إذا كانت
expressionأحادية، يتم استدعاؤها مع كل عنصر من عناصرarray. - إذا كانت
expressionثنائية، يتم استدعاؤها مع كل عنصر من عناصرarrayوالفهرس المقابل المستند إلى 0.
أمثلة:
| مصفوفة | تعبير | array_transform(array, expression) |
|---|---|---|
| [1, 2, 3] | x -> x * 2 | [2, 4, 6] |
| [1, 2, 3] | x -> x + 1 | [2, 3, 4] |
| [10, 20] | (x, i) -> x + i | [10, 21] |
| [] | x -> 1 | [] |
MAXIMUM
البنية:
maximum(array: ARRAY) -> ANY
الوصف:
تعرض هذه الدالة الحد الأقصى للقيمة في array.
- يتم تجاهل قيم
NULLأثناء المقارنة. - إذا كانت السمة
arrayفارغة أو تحتوي على قيمNULLفقط، يتم عرضNULL.
أمثلة:
| مصفوفة | maximum(array) |
|---|---|
| [1, 5, 2] | 5 |
| [1, null, 5] | 5 |
| ["a", "c", "b"] | "c" |
| [null, null] | قيمة فارغة |
| [] | قيمة فارغة |
MAXIMUM_N
البنية:
maximum_n(array: ARRAY, n: INT64) -> ARRAY
الوصف:
تعرض هذه الدالة مصفوفة من n أكبر قيم في array بترتيب تنازلي.
- يتم تجاهل قيم
NULL. - إذا كانت قيمة
nسالبة، يتم عرض رسالة خطأ.
أمثلة:
| مصفوفة | n | maximum_n(array, n) |
|---|---|---|
| [1, 5, 2, 4, 3] | 3 | [5, 4, 3] |
| [1, null, 5] | 3 | [5, 1] |
الحد الأدنى
البنية:
minimum(array: ARRAY) -> ANY
الوصف:
تعرض هذه الدالة الحد الأدنى للقيمة في array.
- يتم تجاهل قيم
NULLأثناء المقارنة. - إذا كانت السمة
arrayفارغة أو تحتوي على قيمNULLفقط، يتم عرضNULL.
أمثلة:
| مصفوفة | minimum(array) |
|---|---|
| [1, 5, 2] | 1 |
| [5, null, 1] | 1 |
| ["a", "c", "b"] | "a" |
| [null, null] | قيمة فارغة |
| [] | قيمة فارغة |
MINIMUM_N
البنية:
minimum_n(array: ARRAY, n: INT64) -> ARRAY
الوصف:
تعرض هذه الدالة صفيفًا يتضمّن n أصغر قيم في array بترتيب تصاعدي.
- يتم تجاهل قيم
NULL. - إذا كانت قيمة
nسالبة، يتم عرض رسالة خطأ.
أمثلة:
| مصفوفة | n | minimum_n(array, n) |
|---|---|---|
| [1, 5, 2, 4, 3] | 3 | [1, 2, 3] |
| [5, null, 1] | 3 | [1, 5] |
SUM
البنية:
sum(array: ARRAY) -> INT64 | FLOAT64
الوصف:
تعرض هذه الدالة مجموع كل قيم NUMERIC في ARRAY.
- يتم تجاهل القيم غير الرقمية في المصفوفة.
- إذا كانت أي قيمة رقمية في الصفيف هي
NaN، تعرض الدالةNaN. - يتم تحديد نوع القيمة التي تم إرجاعها من خلال أوسع نوع رقمي في المصفوفة:
INT64<FLOAT64. - إذا حدث تجاوز سعة عدد صحيح 64 بت قبل جمع أي قيمة نقطة عائمة، يتم عرض خطأ. إذا تم جمع قيم الفاصلة العائمة، سيؤدي تجاوز الحد الأقصى إلى قيمة موجبة أو سالبة لا نهائية.
- إذا لم يكن الصفيف يحتوي على أي قيم رقمية على الإطلاق، تعرض الدالة
NULL.
أمثلة:
| مصفوفة | sum(array) |
|---|---|
| [1, 2, 3] | 6L |
| [1L, 2L, 3L] | 6L |
| [2000000000, 2000000000] | 4000000000L |
| [10, 20.5] | 30.5 |
| [1, "a", 2] | 3L |
| [INT64.MAX_VALUE, 1] | خطأ |
| [INT64.MAX_VALUE, 1, -1.0] | خطأ |
| [INT64.MAX_VALUE, 1.0] | 9.223372036854776e+18 |
الضم
البنية:
join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T) -> STRING
join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T, null_text: T) -> STRING
الوصف:
تعرض هذه الدالة تسلسلاً للعناصر في array كـ STRING. يمكن أن يكون array من نوعَي البيانات STRING أو BYTES.
- يجب أن تكون جميع العناصر في
arrayوdelimiterوnull_textمن النوع نفسه، أي يجب أن تكون جميعهاSTRINGأوBYTES. - في حال توفير
null_text، يتم استبدال أي قيمNULLفيarrayبالقيمةnull_text. - إذا لم يتم تقديم
null_text، سيتم حذف قيمNULLفيarrayمن النتيجة.
أمثلة:
في حال عدم توفّر null_text:
| مصفوفة | محدِّد | join(array, delimiter) |
|---|---|---|
| ["a", "b", "c"] | "," | "a,b,c" |
| ["a", null, "c"] | "," | "a,c" |
| [b'a', b'b', b'c'] | b',' | b'a,b,c' |
| ["a", b'c'] | "," | خطأ |
| ["a", "c"] | b',' | خطأ |
| [b'a', b'c'] | "," | خطأ |
عند توفير null_text:
| مصفوفة | محدِّد | null_text | join(array, delimiter, null_text) |
|---|---|---|---|
| ["a", null, "c"] | "," | "MISSING" | "a,MISSING,c" |
| [b'a', null, b'c'] | b',' | b'NULL' | b'a,NULL,c' |
| [null, "b", null] | "," | "MISSING" | "MISSING,b,MISSING" |
| [b'a', null, null] | b',' | b'NULL' | b'a,NULL,NULL' |
| ["a", null] | "," | b'N' | خطأ |
| [b'a', null] | b',' | "N" | خطأ |