操作员 operators

运算符分为二类:一元运算符和二元运算符。 有左一元运算符和右一元运算符。

// left-hand unary operators
// <operator> <operand>
// operand is an expression
not (@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example@adobe.com")

// right-hand unary operators
// <operator> <operand>
// operand is an expression
@event{LobbyBeacon.endUserIDs._experience.emailid.id} is not null

// binary operators
// <operand1> <operator> <operand2>
// operand is an expression
(@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example1@adobe.com") or (@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example2@adobe.com")

重要说明 important-notes

  • 使用乘法(*)时,两个操作字段必须具有相同的类型,可以是整数或小数。 示例:

    • 以下示例是正确的: 3.0 * 4.0
    • 3 * 4.0将导致错误
  • 使用+运算符时,表达式需要封装在括号中。 示例:

    • toDateTimeOnly(toDateTime((currentTimeInMillis()) + 1))正确
    • toDateTimeOnly(toDateTime(currentTimeInMillis() + 1))将导致错误

逻辑 logical

和

<expression1> and <expression2>

<expression1>和<expression2>都必须是布尔值。 结果是布尔值。

示例:

3.14 > 2 and 3.15 < 1

或

<expression1> or <expression2>

<expression1>和<expression2>都必须是布尔值。 结果是布尔值。

示例:

3.14 > 2 or 3.15 < 1

非

not <expression>

<expression>必须为布尔值。 结果是布尔值。

示例:

not 3.15 < 1

比较 comparison

为空

<expression> is null

结果是布尔值。

请注意,null表示表达式没有计算值。

示例:

@event{BarBeacon.location} is null

不为null

<expression> is not null

结果是布尔值。

请注意,null表示表达式没有计算值。

示例:

@event{BarBeacon.location} is not null

为空

<expression> has null

<expression>必须为列表。 结果是布尔值。

用于标识列表是否包含至少一个null值。

示例:

["foo", "bar", null] has null

返回true

["foo", "bar", ""] has null

返回false,因为“”不视为null。

==

<expression1> == <expression2>
NOTE
对于<expression1>和<expression2>,没有数据类型控件。

示例:

3.14 == 42
"foo" == "bar"

!=

<expression1> != <expression2>
NOTE
对于<expression1>和<expression2>,没有数据类型控件。

结果是布尔值。

示例:

3.14 != 42
"foo" != "bar"

>

<expression1> > <expression2>

日期时间可以与日期时间进行比较。

只能将Datetimeonly与Datetimeonly进行比较。

整数或小数都可与整数或小数进行比较。

禁止任何其他组合。

结果是布尔值。

示例:

3.14 > 42

>=

<expression1> >= <expression2>

日期时间可以与日期时间进行比较。

只能将Datetimeonly与Datetimeonly进行比较。

整数或小数都可与整数或小数进行比较。

禁止任何其他组合。

结果是布尔值。

示例:

42 >= 3.14

<

<expression1> < <expression2>

日期时间可以与日期时间进行比较。

只能将Datetimeonly与Datetimeonly进行比较。

整数或小数都可与整数或小数进行比较。

禁止任何其他组合。

结果是布尔值。

示例:

42 < 3.14

<=

<expression1> <= <expression2>

日期时间可以与日期时间进行比较。

只能将Datetimeonly与Datetimeonly进行比较。

整数或小数都可与整数或小数进行比较。

禁止任何其他组合。

结果是布尔值。

示例:

42 <= 3.14

算术 arithmetic

+

<expression1> + <expression2>

两个表达式都必须是数字(整数或小数)。

结果也是数字。

示例:

1 + 2

返回3

-

<expression1> - <expression2>

两个表达式都必须是数字(整数或小数)。

结果也是数字。

示例:

2 - 1

返回1

/

<expression1> / <expression2>

两个表达式都必须是数字(整数或小数)。

结果也是数字。

<expression2>不能等于0(返回0)。

示例:

4 / 2

返回2

*

<expression1> * <expression2>

两个表达式都必须是数字(整数或小数)。

结果也是数字。

示例:

3 * 4

返回12

%

<expression1> % <expression2>

两个表达式都必须是数字(整数或小数)。

结果也是数字。

示例:

3 % 2

返回1。

数学 math

是数字

<expression> is numeric

表达式的类型为整数或小数。

示例:

@ is numeric

为整数

<expression> is integer

表达式的类型为integer。

示例:

@ is integer

为小数

<expression> is decimal

表达式的类型为小数。

示例:

@ is decimal

字符串 string

+

<string> + <expression>
<expression> + <string>

它连接两个表达式。

一个表达式必须是链接字符串。

示例:

"the current time is " + (now())

返回“当前时间为2023-09-23T09:30:06.693Z”

(now()) + " is the current time"

返回“2023-09-23T09:30:06.693Z是当前时间”

"a" + "b" + "c" + 1234

返回“abc1234”。

日期 date

+

<expression> + <duration>

将持续时间附加到dateTime、dateTimeOnly或duration。

示例:

(toDateTime("2023-12-03T15:15:30Z")) + (toDuration("PT15M"))

返回​dateTime 2023-12-03T15:30:30Z

(toDateTimeOnly("2023-12-03T15:15:30")) + (toDuration("PT15M"))

返回​dateTimeOnly 2023-12-03T15:30:30

(now()) + (toDuration("PT1H"))

从当前时间后一小时返回​dateTime(具有UTC时区)

(toDuration("PT1H")) + (toDuration("PT1H"))

返回​持续时间 PT2H

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page is a complete reference of operators available in the Journey advanced expression editor, covering logical (and, or, not), comparison (==, !=, >, >=, <, <=, is null, is not null, has null), arithmetic (+, -, /, *, %), math type-check (is numeric, is integer, is decimal), string concatenation, and date arithmetic operators.

Intents:

  • Combine boolean conditions using logical operators and, or, and not
  • Check whether a field or expression value is null or not null using is null / is not null
  • Detect null values within a list using the has null operator
  • Compare numeric, datetime, and datetimeonly values using >, >=, <, <=, ==, and !=
  • Perform arithmetic on numeric values using +, -, /, *, and %
  • Add a duration to a dateTime, dateTimeOnly, or duration value using the + operator

Glossary:

  • Unary operator: An operator applied to a single operand; can be left-hand (e.g. not) or right-hand (e.g. is null) (product-specific)
  • Binary operator: An operator applied between two operands (e.g. and, ==, +) (product-specific)
  • has null: A right-hand unary operator that returns true if a list contains at least one null element (product-specific)
  • is numeric / is integer / is decimal: Type-check operators that return a boolean based on the numeric subtype of the expression (product-specific)

Guardrails:

  • When using multiplication (*), both operands must be the same numeric type (both integer or both decimal) — mixing types causes an error
  • When using the + operator for date arithmetic, the expression must be wrapped in parentheses to avoid parsing errors
  • Comparison operators (>, >=, <, <=) are only valid between compatible types: Datetime with Datetime, DatetimeOnly with DatetimeOnly, or numeric with numeric — any other combination is forbidden
  • An empty string "" is not considered null — has null returns false for a list containing ""
  • The == and != operators perform no data type control between operands

Terminology:

  • Canonical name: Operators — Acronym: none — variants: expression operators, journey operators
  • Synonyms: and = “logical AND”; or = “logical OR”; not = “logical NOT”; % = “modulo”
  • Do not confuse: is null (expression has no evaluated value) ≠ == null (not a valid syntax); has null (list contains null) ≠ is null (expression itself is null)

FAQ:

  • Q: Can I multiply an integer by a decimal directly? — No; both operands of * must be the same type. Use 3.0 * 4.0 (both decimal) or 3 * 4 (both integer).
  • Q: How do I add 15 minutes to a dateTime? — Use (toDateTime("...")) + (toDuration("PT15M")).
  • Q: What is the difference between is null and has null? — is null checks whether a single expression has no evaluated value; has null checks whether a list contains at least one null element.
  • Q: Does "" has null return true? — No; an empty string is not considered null, so the result is false.
  • Q: Why does 3 * 4.0 cause an error? — The * operator requires both operands to be the same numeric type; mixing integer and decimal is not allowed.
recommendation-more-help
journey-optimizer-help