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

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

שם תיאור
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();

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();

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();

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();

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();

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();

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

תחביר:

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