Concatenate (||)

The || operator makes a string concatenation.

Syntax

expr || expr
  1. expr can be a character, numeric or date/time expression.

Usage

The || operator is the concatenation operator that produces a string expression from the expression elements on both sides of the operator.

If any of the members of a concatenation expression is NULL, the result string will be NULL.

The || operator is typically used to concatenate strings to build a value passed as parameters to a function.

The || concatenation operator has different formatting rules as when using the the comma in instructions such as LET. The comma implies fixed-size formatting for numeric and date/time values, while || will compact and trim the values.

The || operator has a lower precedence than arithmetic operators; For example, a || b + c is equivalent to (a||(b+c)).

However, the || operator has a higher precedence than LIKE, MATCHES and USING operators; For example, v USING "&&" || "&" is equivalent to v USING ("&&" || "&") which is the same as v USING "&&&".

Example

Building strings to be passed as parameters to functions:

MAIN
    CALL print_message( 5, "Current date: " || TODAY )
    DISPLAY "Length: ", length( "ab" || "cdef" )
END MAIN

FUNCTION print_message(l TINYINT, s STRING)
    DISPLAY "Level: ", l, " ", s
END FUNCTION
Output:
Level:    5 Current date: 12/22/2018
Length:           6
Order of precedence test:
MAIN
    DISPLAY 78 || 1 + 8                         -- 789
    DISPLAY 78 || 3 * 3                         -- 789
    DISPLAY 789 USING "&&" || "&"               -- 789
    DISPLAY (34 USING "&&") || "&"              -- 34&
    DISPLAY "abc" MATCHES "ab" || "c"           --      1 (TRUE)
    DISPLAY ("ab" MATCHES "ab") || "c"          -- 1c
    DISPLAY "a" MATCHES "a" || "&&"             --      0 (FALSE)
    DISPLAY 23 USING "a" MATCHES "a" || "&&"    -- *  (format = "0")
    DISPLAY 23 USING ("a" MATCHES "a") || "&&"  -- 123
END MAIN
Formatting differences between || and , (comma):
MAIN
    DISPLAY "Date: ", TODAY, " day num: ", DAY(TODAY), " Pi=", 3.1415
    DISPLAY "Date: "||TODAY||" day num: "||DAY(TODAY)||" Pi="||3.1415
END MAIN
Output:
Date: 12/22/2018 day num:     22 Pi= 3.1415
Date: 12/22/2018 day num: 22 Pi=3.1415