操作员 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知识参考

本节包含结构化知识,用于支持与本主题相关的解释、检索和问答。

要全面了解相关信息,应将此信息与本页上的文档相结合。 这两个源都不是独立的;页面描述了功能,而本节提供了其他上下文来帮助消除术语、意图、适用性和约束条件的歧义。

  • TL;DR:​此页是历程高级表达式编辑器中可用运算符的完整引用,涵盖逻辑(andornot)、比较(==!=>>=<<=is nullis not nullhas null)、算术(+-/*%)、数学类型检查(is numericis integeris decimal)、字符串连接和日期算术运算符。

意图:

  • 使用逻辑运算符andornot组合布尔条件
  • 使用is null / is not null检查字段或表达式值是否为null或不为null
  • 使用has null运算符检测列表中的null值
  • 使用>>=<<===!=比较数值、日期时间和仅日期时间值
  • 使用+-/*%对数值执行算术
  • 使用+运算符将持续时间添加到dateTime、dateTimeOnly或duration值

术语表:

  • 一元运算符:应用于单个操作数的运算符;可以为左侧(例如not)或右侧(例如is null(产品特定)
  • 二进制运算符:在两个操作数(例如and==+(产品特定)​之间应用的运算符
  • 具有null:如果列表至少包含一个null元素​(产品特定),则右边一元运算符会返回true
  • 是数字/是整数/是十进制:类型检查运算符根据表达式​(特定于产品)的数值子类型返回布尔值

护栏:

  • 使用乘法(*)时,两个操作数必须是相同的数字类型(整数或小数两者) — 混合类型会导致错误
  • 在日期算术中使用+运算符时,表达式必须用括号括起来,以避免出现分析错误
  • 比较运算符(>>=<<=)仅在兼容类型之间有效:带有Datetime的Datetime、带有DatetimeOnly的DatetimeOnly或带有数值的numeric — 禁止任何其他组合
  • 空字符串""不视为null — has null对包含""的列表返回false
  • ==!=运算符在操作数之间不执行数据类型控制

术语:

  • 规范名称:运算符 — 首字母缩写:none — 变体:表达式运算符、历程运算符
  • 同义词: and = “logical AND”;or = “logical OR”;not = “logical NOT”;% = “modulo”
  • 请勿混淆: is null (表达式没有计算值)≠ == null (不是有效的语法); has null (列表包含null)≠ is null (表达式本身为null)

常见问题解答:

  • 问:能否将整数直接乘以小数? — 否;*的两个操作数都必须是同一类型。 使用3.0 * 4.0(小数)或3 * 4(整数)。
  • 问:如何向dateTime添加15分钟? — 使用(toDateTime("...")) + (toDuration("PT15M"))
  • 问:is nullhas null之间有何区别?is null检查单个表达式是否没有计算值;has null检查列表是否包含至少一个null元素。
  • 问:"" has null是否返回true? — 否;不将空字符串视为null,因此结果为false。
  • 问:为什么3 * 4.0会导致错误?*运算符要求两个操作数必须是相同的数字类型;不允许混合使用整数和小数。
recommendation-more-help
journey-optimizer-help