Text functions let you manipulate character strings.

If a function expects a string but encounters a number, it converts it to a string using mathematical notation ("." decimal separator, no thousands separator).

CONCAT

CONCAT(Value; ...)

Concatenates (merges) text values into a single text. 

ParameterTypeDescription
Value1Value2, ..., ValueNText/JoinedText string(s). Accepts any number of arguments. Ignores falsy values.
ResultTextA single text containing all the values combined.

Example:

  • CONCAT(Reporter; ' => '; Assignee)

EXACT

EXACT(A; B)

Checks if text value A is exactly the same as text value B.

ParameterTypeDescription
AText/JoinedText value.
BText/JoinedText value.
ResultBooleanReturns true (1) if values are exactly the same. Otherwise, false (0).

This comparison is case sensitive, which is different from comparing A with B using an equals sign or text matching. Undefined values will be equal to each other and to empty strings.

Examples:

  • EXACT("Fox"; "fox") → 0
  • EXACT("Fox"; "Fox") → 1
  • EXACT(""; undefined) → 1

LEFT

LEFT(Value; N)

Returns up to N leftmost characters from a text value.

ParameterTypeDescription
ValueText/JoinedText to get characters from.
NInteger The number of characters to get.
ResultTextThe first N characters, starting from the left. If Value contains fewer characters, all of them are returned. If the value is less than zero, an empty text is returned.

Example:

  • LEFT("abc"; 2) → "ab"

LEN

LEN(Value)

Returns the number of characters in a text value.

ParameterTypeDescription
ValueText/JoinedText to count. If the value is not text, it is converted to text first.
ResultIntegerThe number of characters in Value.

Example:

  • LEN("abc") → 3

LOWER

LOWER(Value)

Converts text to lowercase. The locale of the current user is applied.

ParameterTypeDescription
ValueText/EachText to convert.
ResultTextValue in all lowercase.

Example:

  • LOWER("HAM") → "ham"

MATCH

MATCH(Value; Pattern)

Checks if the Value matches the Pattern.

ParameterTypeDescription
ValueText/JoinedValue to check.
PatternText/JoinedPattern to check against. Can be an exact value, a wildcard expression or a regular expression. See Expr Pattern Matching for details.
ResultBoolean Returns true (1) or false (0).

Examples:

  • MATCH("Apples"; "Oranges") → 0
  • MATCH(" Blocker "; "blocker") → 1
  • MATCH("Hamster"; "ham*") → 1
  • MATCH("The Flight of the Bumblebee"; "/.light.*beer?/") → 1

MID

MID(Value; Index; Count)

Retrieves a part of the text.

ParameterTypeDescription
ValueText/JoinedThe text value to get a substring from.
IndexIntegerThe starting index of the part to retrieve, 1-based (first character is at index 1).
CountIntegerThe number of characters to retrieve.
ResultText Text containing Count number of characters, starting from Index.

Example:

  • MID("A quick brown fox"; 3; 5) → "quick"

REPEAT

REPEAT(Value; N)

Produces a text that is a repetition of the string value N times.

ParameterTypeDescription
ValueText/JoinedText to repeat.
NIntegerThe number of repetitions.
ResultTextThe repeated text.

Examples:

  • REPEAT("ha"; 3) → "hahaha"
  • REPEAT(123, 3) → "123123123"

REPLACE

REPLACE(Value; Pattern; Replacement)

Replaces all occurrences of Pattern with Replacement and returns the new text.

ParameterTypeDescription
ValueText/JoinedThe text to manipulate.
PatternTextPattern to find. Can be an exact value, a wildcard expression or a regular expression. See Expr Pattern Matching for details.
Replacement (Optional)TextAn optional text to use instead of the matched parts. If omitted, the matched parts are removed.
ResultTextValue with replacements.

Examples:

  • REPLACE("I like cats"; "CAT"; "DOG") → "I like DOGs"
  • REPLACE("Can you read this?"; "/[aeuio]/") → "Cn y rd ths?"

REPLACE_AT

REPLACE_AT(Value; Index; Count; Replacement)

Replaces a specific part of the Value with Replacement text and returns the value.

ParameterTypeDescription
ValueText/JoinedThe text to manipulate.
IndexIntegerThe starting index of the part to replace, 1-based (first character is 1, second is 2, etc.)
CountIntegerThe number of characters to replace. When Count is 0, the Replacement string gets inserted at the Index position.
Replacement (Optional)TextAn optional text to use instead of the replaced part. If omitted, the part will be deleted.
ResultTextValue with replacements.

When the values of Index and Count are out of range, they are brought to the nearest sensible value.

Examples:

  • REPLACE_AT("A"; 1; 1; "B") → "B"
  • REPLACE_AT("What does the fox say?"; 6; 4; "did") → "What did the fox say?"
  • REPLACE_AT("A step for mankind"; 3; 0; "small ") → "A small step for mankind"
  • REPLACE_AT("A step for mankind"; 7; 1000) → "A step"

RIGHT

RIGHT(Value; N)

Returns up to N rightmost characters from a string value.

ParameterTypeDescription
ValueText/JoinedText to get characters from.
NIntegerThe number of characters to get.
ResultTextThe first N characters, starting from the right. If Value contains fewer characters, all of them are returned.

Example:

  • RIGHT("abc"; 2) → "bc"

SEARCH(Pattern; Value; Index)

Finds the first occurrence of a pattern in the value. 

ParameterTypeDescription
PatternTextThe text or pattern to look for. Can be an exact value, a wildcard expression or a regular expression. See Expr Pattern Matching for details.
ValueText/JoinedThe text to search in.
Index (Optional)IntegerOptional parameter that provides an index to start searching at.
ResultIntegerReturns the index of the matched part (1-based), or undefined if not found.

Examples:

  • SEARCH("ham"; "The Ham is for the Hamster"; 6) → 20
  • SEARCH("Jedi*"; "Return of the Jedi") → 15
  • SEARCH("/^Jedi/"; "Not the Jedi you're looking for") → undefined

SPLIT

SPLIT(Value; Separator)

Produces an array from the value by splitting it using a separator.

ParameterTypeDescription
ValueText/JoinedThe text to split.
SeparatorTextThe text or pattern to split by. Can be an exact value, a wildcard expression or a regular expression. See Expr Pattern Matching for details.
ResultArrayReturns an array which contains the split texts.

Examples:

  • SPLIT("One, Two, Three", ",") → ARRAY("One", "Two", "Three")
  • SPLIT("A and B or C", "/ and | or /") → ARRAY("A", "B", "C")

SUBSTRING

SUBSTRING(Value; From; To)

Returns a substring, indicated by a starting index and ending index. Note that the indexes are 0-based, unlike in some other functions.

ParameterTypeDescription
ValueText/JoinedThe text to take the part from.
FromIntegerStarting index, inclusive, 0 means the first character, LEN(Value)-1 means the last character.
To (Optional)IntegerOptional ending index, exclusive - the character at this index will not be included. If omitted, the substring will include all characters up to the end of the Value.
ResultTextReturns the portion of the text contained between From and To.

If To value is greater than the text length, all characters will be included. If To is less than From, an empty text is returned.

Examples:

  • SUBSTRING("Batman"; 0; 3) → "Bat"
  • SUBSTRING("Batman"; 3) → "man"

TEXT

TEXT(Value)

Converts value to text. This function is rarely needed, because conversion to text happens automatically when needed.

ParameterTypeDescription
ValueAny (If text, Text/Joined)Value to convert
ResultTextValue converted to text.

Example:

  • TEXT(1.234) → "1.234"

TRIM

TRIM(Value)

Removes leading and trailing whitespace from the text.

ParameterTypeDescription
ValueText/EachThe text to manipulate.
ResultTextReturns Value without leading/trailing whitespace.

Example:

  • TRIM(" Batman ") → "Batman"

UPPER

UPPER(Value)

Converts the string to uppercase. The locale of the current user is applied.

ParameterTypeDescription
ValueText/EachThe text to manipulate.
ResultTextReturns Value in all uppercase.

Example:

  • UPPER("ham") → "HAM"