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

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

الاسم الوصف
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 في الحالات الأخرى.

أمثلة:

مصفوفة search_values 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 في الحالات الأخرى.

أمثلة:

مصفوفة search_values 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 على أنّه قيمة غير منطقية أو غير فارغة، ستعرض الدالة خطأ.

أمثلة:

مصفوفة 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>

الوصف:

تعرض هذه الدالة مصفوفة تحتوي على الفهارس المستندة إلى الصفر لجميع تكرارات 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 غير سالبة، وإلا ستعرض الدالة خطأ.

أمثلة:

مصفوفة اقتطاع الطول 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(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] ‫6 لتر
[1L, 2L, 3L] ‫6 لتر
[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" خطأ