פונקציות של מערכים

פונקציות מערך

שם תיאור
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 במערך שנוצר.

לדוגמה:

ערכים 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 true
[[1, 2], [3]] [1, 2] true
[1, null] null true
"abc" הכול error
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] true
[1, 2, 3] [1, 4] false
[1, null] [אפס] true
[NaN] [NaN] true
[] [] true
[1, 2, 3] [] true
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] true
[1, 2, 3] [4, 5] false
[1, 2, null] [אפס] true
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, ומחזיר מערך חדש עם רכיבים שעומדים בתנאי בלבד.

  • לכל רכיב ב-array, מתבצעת הערכה של predicate. אם הפונקציה מחזירה true, הרכיב נכלל בתוצאה. אחרת (אם היא מחזירה false או null), הוא מושמט.
  • אם הערך של predicate הוא לא בוליאני או לא null, הפונקציה מחזירה שגיאה.

לדוגמה:

מערך פרדיקט 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 error
null 0 null
Array "a" error
Array 2.0 error

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] null 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] 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] 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] 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] error
[INT64.MAX_VALUE, 1, -1.0] error
[INT64.MAX_VALUE, 1.0] 9.223372036854776e+18

JOIN

תחביר:

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'] "," error
["a", "c"] b',' error
[b'a', b'c'] "," error

כשמציינים את המאפיין 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' error
[b'a', null] b',' "N" error