دوال المصفوفات

دوال المصفوفات

الاسم الوصف
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" خطأ