公式与验证规则参考
本参考指南详细列出了平台验证规则、计算字段和默认值公式中所支持的全部运算符、函数规格及使用示例。
支持的字段类型
公式引擎支持在表达式中插入以下类型的字段:
- 金额、百分数、小数、数字。
- 日期、日期时间、时间。
- 单行文本、多行文本、邮箱、网址、地址、手机。
- 布尔值。
- 定位组件、签到组件、收款组件。
- 计算字段、统计字段。
- 跨对象的查找关联字段的计算字段及统计字段。
完整运算符与函数清单
| 返回值类型 | 运算符 / 函数 | 参数要求 | 功能说明 | 示例 / 备注 |
|---|---|---|---|---|
| 通用 | () | - | 改变和标注运算符的优先级。 | (3 + 2) * 5 |
| 通用 | IF(logical_test, value_if_true, value_if_false) | 3 个参数。 第 1 个为布尔类型,第 2、3 参数类型必须一致。 | 判断条件是否为 true,如果是则返回第 2 参数值,否则返回第 3 参数值。 | IF(true, 34, 52) 结果为 34 |
| 通用 | CASE(expression, value1, result1, value2, result2, ..., else_result) | 不定参数。 所有 result 和 else_result 必须为同一种类型。 | 将 expression 依次与 value 进行比较,相等则返回对应 result。若均不相等,返回 else_result。 | CASE(3, 2, 2, 3, 33, 1.3) 结果为 33 |
| 通用 | NULLVALUE(expression, substitute_expression) | 2 个参数。 返回值类型与第 2 参数一致。 | 判断表达式结果是否为空,如果是则返回替代值,否则返回原值(或 Null)。 | NULLVALUE(Null, 1) 结果为 1NULLVALUE(5, 1) 结果为 Null |
| 数值 | +, -, *, / | 2 个参数。 数值、百分比、金额。 | 执行基础的数学运算。 | (3 + 2) * 6 / 5 结果为 6 |
| 数值 | - (日期相减) | 2 个参数。 均为日期类型。 | 计算两个日期之间的差值,以 天 为单位。 | 日期 A - 日期 B 结果为天数(数值) |
| 数值 | - (日期时间相减) | 2 个参数。 均为日期时间类型。 | 计算两个时间点之间的差值,以 小时 为单位。 | 时间 A - 时间 B 结果为小时数(数值) |
| 数值 | - (时间相减) | 2 个参数。 均为时间类型。 | 计算时间值之差,以 小时 为单位。 | 17:00:00 - 15:00:00 结果为 2 |
| 数值 | VALUE(string) | 1 个参数。 文本型。 | 将文本形式的数字转换成数字(支持负数和小数),失败返回空(Null)。 | VALUE('-1982.0413') 结果为 -1982.0413 |
| 数值 | MIN(number1, number2) | 2 个参数。 均为数值类型。 | 返回两个参数中的较小值。 | MIN(4, 13) 结果为 4 |
| 数值 | MAX(number1, number2) | 2 个参数。 均为数值类型。 | 返回两个参数中的较大值。 | MAX(4, 13) 结果为 13 |
| 数值 | MULTIPLE(number1, number2) | 2 个参数。 均为数值类型。 | 返回两数相乘的结果。 | MULTIPLE(4, 13) 结果为 52 |
| 数值 | MOD(number1, number2) | 2 个参数。 均为数值类型。 | 返回相除之后的余数(模运算)。 | MOD(13, 4) 结果为 1 |
| 数值 | ADDS(number1, number2) | 2 个参数。 均为数值类型。 | 返回两数相加的结果。 | ADDS(13, 4) 结果为 17 |
| 数值 | SUBTRACTS(number1, number2) | 2 个参数。 均为数值类型。 | 返回两数相减的结果。 | SUBTRACTS(13, 4) 结果为 9 |
| 数值 | YEAR(date) | 1 个参数。 日期或日期时间。 | 获取指定时间的年份数值。 | YEAR(DATEVALUE('1982-04-13')) 结果为 1982 |
| 数值 | MONTH(date) | 1 个参数。 日期或日期时间。 | 获取指定时间的月份数值。 | MONTH(DATEVALUE('1982-04-13')) 结果为 4 |
| 数值 | DAY(date) | 1 个参数。 日期或日期时间。 | 获取指定日期的日数值(几号)。 | DAY(DATEVALUE('1982-04-13')) 结果为 13 |
| 数值 | LEN(text) | 1 个参数。 文本型。 | 返回字符串的字符长度。 | LEN('xiaoke') 结果为 6 |
| 时间周期 | YEARS(number) | 1 个参数。 数值型。 | 用于在日期加减中指定年的偏量。 | TODAY() + YEARS(1) 结果为一年后的今天 |
| 时间周期 | MONTHS(number) | 1 个参数。 数值型。 | 用于在日期加减中指定月的偏量。 | TODAY() + MONTHS(2) |
| 时间周期 | DAYS(number) | 1 个参数。 数值型。 | 用于在日期加减中指定天数偏量。 | TODAY() - DAYS(7) |
| 时间周期 | HOURS(number) | 1 个参数。 数值型。 | 用于在时间加减中指定小时偏量。 | NOW() + HOURS(4) |
| 时间周期 | MINUTES(number) | 1 个参数。 数值型。 | 用于在时间加减中指定分钟偏量。 | NOW() - MINUTES(30) |
| 日期 | +, - | 2 个参数。 日期与时间偏移量。 | 对日期进行加减偏移计算。 | 创建时间 + DAYS(4) |
| 日期 | DATE(year, month, day) | 3 个参数。 均为数值。 | 传入年、月、日数值构建一个日期类型值。 | DATE(1982, 4, 13) 结果为 1982-04-13 |
| 日期 | DATEVALUE(string) | 1 个参数。 字符串。 | 将符合日期格式的字符串解析为日期值。 | DATEVALUE('1982-04-13') |
| 日期 | TODAY() | 0 个参数。 | 返回当前的日期(不含具体时刻)。 | 2026-07-02 |
| 日期 | DATETIMETODATE(datetime) | 1 个参数。 日期时间。 | 提取并返回日期时间中的日期部分。 | DATETIMETODATE(NOW()) |
| 日期时间 | +, - | 2 个参数。 日期时间与偏移量。 | 对具体的时间戳进行加减偏移计算。 | 截止时间 - DAYS(1) |
| 日期时间 | DATETIMEVALUE(string) | 1 个参数。 字符串。 | 将字符串解析为具体的日期时间类型值。 | DATETIMEVALUE('2001-08-24 15:45:25') |
| 日期时间 | NOW() | 0 个参数。 | 返回当前的实时日期时间(含时分秒)。 | 2026-07-02 17:38:00 |
| 时间 | DATETIMETOTIME(datetime) | 1 个参数。 日期时间。 | 提取并返回日期时间中的时刻部分。 | DATETIMETOTIME(NOW()) 结果如 17:02:40 |
| 文本 | & | 2 个参数。 均为文本类型。 | 将两个字符串进行拼接合并。 | '张三' & '李四' 结果为 "张三李四" |
| 文本 | '' | 1 个参数。 单引号包裹。 | 声明单行文本常量。 | '单行文本内容' |
| 文本 | '''''' | 1 个参数。 三单引号包裹。 | 声明包含换行的多行文本常量。 | '''多行文本内容''' |
| 文本 | NUMBERSTRING(number) | 1 个参数。 数值或金额。 | 将阿拉伯数字转换为中文大写数字。 | NUMBERSTRING(198204.13) 结果为 "壹拾玖万捌仟贰佰零肆点壹叁" |
| 文本 | NUMBERSTRINGRMB(number) | 1 个参数。 数值或金额。 | 将阿拉伯数字转换为中文大写人民币金额。 | NUMBERSTRINGRMB(198204.13) 结果为 "壹拾玖万捌仟贰佰零肆元壹角叁分" |
| 布尔 | <, >, >=, <=, ≠ | 2 个参数。 同类可比类型。 | 进行大小或相等性判定,返回 true 或 false。 | 1 < 2 结果为 true |
| 布尔 | AND(boolean1, boolean2, ...) | 不定参数。 均为布尔值。 | 逻辑与。所有条件均为 true 时返回 true。 | AND(2 > 1, 5 > 3) 结果为 true |
| 布尔 | OR(boolean1, boolean2, ...) | 不定参数。 均为布尔值。 | 逻辑或。只要有一个条件为 true 即返回 true。 | OR(2 > 1, 5 < 3) 结果为 true |
| 布尔 | NOT(boolean) | 1 个参数。 布尔值。 | 逻辑非。反转布尔值。 | NOT(2 > 1) 结果为 false |
| 布尔 | ISNULL(expression) | 1 个参数。 任意类型。 | 判定字段或表达式计算结果是否为空。 | ISNULL(手机号) 结果为布尔值 |
| 布尔 | ISNUMBER(string) | 1 个参数。 字符串。 | 判定该文本字符串是否可以成功转换为数字。 | ISNUMBER('5') 结果为 true |
| 布尔 | STARTWITH(string1, string2) | 2 个参数。 字符串。 | 判定 string1 是否以检索字符串 string2 开头。 | STARTWITH('abcdef', 'ab') 结果为 true |
| 布尔 | ENDWITH(string1, string2) | 2 个参数。 字符串。 | 判定 string1 是否以检索字符串 string2 结尾。 | ENDWITH('aecdab', 'ab') 结果为 true |
| 布尔 | EQUALS(string1, string2) | 2 个参数。 字符串。 | 比较两个文本是否完全一致(区分大小写)。 | EQUALS('Abc', 'abc') 结果为 false |
| 布尔 | CONTAINS(string1, string2) | 2 个参数。 字符串。 | 判定 string1 文本中是否包含 string2 关键字。 | CONTAINS('abcdef', 'cd') 结果为 true |
常用验证规则示例
1. 结束日期不能早于开始日期
text
结束日期 < 开始日期2. 状态为“已完成”时,完成日期不能为空
text
AND(EQUALS(状态, '已完成'), ISNULL(完成日期))3. 折扣率不能超过 30% 且金额必须大于 0
text
OR(折扣率 > 0.3, 金额 <= 0)4. 手机号与电话至少填写一项
text
AND(ISNULL(手机), ISNULL(电话))
