公式与条件数据
公式大全
类型转换
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
TO_TEXT | 将整数、小数、jsonb 等转为文本 | -3.1415926 | "-3.1415926" |
TO_INTEGER | 文本或小数转为整数 | -3.1415926 | -3 |
TO_DECIMAL | 文本转为小数 | "-3.1415926" | -3.1415926 |
TEXT_TO_DATETIME | 文本转为日期时间 | "2025-02-21 14:36" | 2025-02-21T14:36:00.000+08:00 |
COMBINE_DATE_AND_TIME | 合并日期和时间为日期时间 | 日期:2024-01-08 时间: 13:38:00.000+08:00 | 2024-01-08T13:38:00.000+08:00 |
EXTRACT_DATE_OR_TIME | 提取日期时间中的日期或时间 | 2024-01-08 13:38:00.000+08:00 | 2024-01-08 |
文本处理
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
STRING_LEN | 返回文本长度 | "Hello World!" | 12 |
REPLACE_PART | 替换指定位置的文本 | 文本:"Hello World!" 起始位置: 1 替换字符数: 4 新文本: "ola" | "Hola World!" |
REPLACE_TEXT | 替换指定文本 | 文本:"Hello World!" 旧文本: "o" 新文本: "" 替换次数: 1 | "Hell World" |
FIND | 返回指定文本首次出现的位置 | 文本:"Hello World!" 要定位的文本: "o" | 4 |
CONTAIN | 判断是否存在指定文本 | 文本:"Hello World!" 要查找的文本: "ello" | true |
SUBSTRING | 截取一段子文本 | 文本:"Hello World!" 开始位置: 0 结束位置: 5 | "Hello" |
LEFT | 从文本头部返回指定字符数 | 文本:"Hello World!" 字符数: 5 | "Hello" |
RIGHT | 从文本尾部返回指定字符数 | 文本:"Hello World!" 字符数: 5 | "World" |
LOWER | 转为小写 | "Hello World!" | "hello world!" |
UPPER | 转为大写 | "Hello World!" | "HELLO WORLD!" |
RANDOM_STRING | 生成随机文本 | 最小长度:5 最大长度: 10 小写: true 大写: true 数字: true | "seXr3aoRD" |
SPLIT | 按指定字符分割文本为数组 | 文本:"2024/01/08" 分隔符: "/" | ["2024", "01", "08"] |
ENCODE_URL | 将文本字符串转换成符合 URL 标准的格式 | 文本:"https://docs.functorz.com/starts/#入门教学视频" | "https%3A%2F%2Fdocs.functorz.com%2Fstarts%2F%23%E5%85%A5%E9%97%A8%E6%95%99%E5%AD%A6%E8%A7%86%E9%A2%91" |
DECODE_URL | 解码一个由ENCODE_URL 函数编码过的 URL | 文本:"%E5%87%BD%E5%AD%90%E7%A7%91%E6%8A%80" | "https://docs.functorz.com/starts/#入门教学视频" |
UUID | 随机生成字符串类型的唯一标识符 | 无 | "550e8400-e29b-41d4-a716-446655440000" |
TEXT_REPEAT | 将文本重复指定的次数 | 文本:"对" 重复次数: 3 | "对对对" |
TRIM | 移除文本开头和结尾的空格 | " dadada " | "dadada" |
REGEX_EXTRACT | 提取第一段与正则匹配的文本 | 文本:"电话号码是 13940983244" 正则: \d{11} | "13940983244" |
REGEX_EXTRACTALL | 返回所有与正则匹配的文本 | 文本:"电话:13940983244 和 13234322452" 正则: \d{11} | ["13940983244","13234322452"] |
REGEX_MATCH | 判断文本是否包含与正则匹配的内容 | 文本:"13812345678" 正则: ^\d{11}$ | true |
REGEX_REPLACE | 替换文本中与正则匹配的部分 | 源文本:"电话号码是13812345678" 正则: \d{11} 替换: "***********" | "电话号码是 ***********" |
数学运算
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
+ | 数字加法 | 数字1:5 数字2: 10 | 15 |
- | 数字减法 | 数字1:5 数字2: 10 | -5 |
* | 数字乘法 | 数字1:5 数字2: 10 | 50 |
/ | 数字除法 | 数字1:5 数字2: 10 | 0.5 |
% | 返回除后所得的余数,符号与被除数一致 | 被除数:-5 除数: 10 | -5 |
MIN | 返回最小值 | 数字1:5 数字2: 10 | 5 |
MAX | 返回最大值 | 数字1:5 数字2: 10 | 10 |
ROUND_UP | 返回向上最接近的整数 | 数字:3.5 | 4 |
ROUND_DOWN | 返回向下最接近的整数 | 数字:-3.5 | -4 |
INT | 取整 | 数字:-3.5 | -3 |
ABS | 返回绝对值 | 数字:-3.5 | 3.5 |
RANDOM_NUMBER | 返回指定数字之间的随机整数 | 最小值:1 最大值: 10 | 6 |
POWER | 幂运算 | 底数:2 指数: 3 | 8 |
DECIMAL_FORMAT | 小数格式化 | 小数:3.1415926 精确到几位小数: 2 舍入模式: HALF_EVEN 清除末尾的所有零: true | 3.14 |
LOG | 根据指定底数返回数字的对数 | 真数:8 底数: 2 | 3 |
数组处理
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
GET_ITEM | 从数组中获取一项,索引从0开始 | 数组:["2024", "01", "08"] 索引: 1 | "01" |
ARRAY_TO_ITEM | 从数组中获取一项(即将废弃,推荐使用GET_ITEM) | 数组:["2024", "01", "08"] 索引: 1 | "01" |
ARR_LEN | 获取数组的长度 | 数组:["2024", "01", "08"] | 3 |
FIRST | 返回数组的第一项 | 数组:["2024", "01", "08"] | "2024" |
LAST | 返回数组的最后一项 | 数组:["2024", "01", "08"] | "08" |
RANDOM_ITEM | 返回数组的随机一项 | 数组:["2024", "01", "08"] | "01" |
SLICE | 取出数组中的一段 | 数组:["2024", "01", "08"] 开始位置: 1 数量: 2 | ["01", "08"] |
JOIN | 将文本类型的数组连接成字符串 | 数组:["2024", "01", "08"] 连接符: "-" | "2024-01-08" |
INDEX_OF | 返回指定项第一次出现的索引 | 数组:["2024", "01", "08"] 指定项: "08" | 2 |
SEQUENCE | 生成指定范围内的数字序列。如果结束数字小于等于开始数字,将返回空数组。 | 起始数字:1 结束数字: 10 步长: 2 | [1,3,5,7,9] |
COALESCE | 按从左到右的顺序,返回数组内第一个”非空”的项 | 数组:[null,1,3,2] | 1 |
ARRAY_MAX | 返回数组中最大的值 | 数组:[1,2,3] | 3 |
ARRAY_MIN | 返回数组中最小的值 | 数组:[1,2,3] | 1 |
ARRAY_SUM | 返回数组中所有值的和 | 数组:[1,2,3] | 6 |
ARRAY_AVERAGE | 返回数组内所有值的平均值 | 数组:[1,2,3] | 2 |
ARRAY_CONCAT | 合并两个数组为1个数组 | 数组1:[1,2,3,4,5] 数组2: [2,3,4] | [1,2,3,4,5,2,3,4] |
UNIQUE | 去除数组当中重复项 | 数组:[1,2,5,4,5,2,3,4] | [1,2,5,4,3] |
时间运算
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
GET_DATE_TIME | 获取时间点 | 年:2024 月: 1 日: 8 时: 13 分: 14 秒: 0 | 2024-01-08T13:14:00.000+08:00 |
DELTA | 时间的加/减运算 | 时间:13:38:00.000+08:00 运算类型: 加 时: 1 分: 12 秒: 0 | 14:50:00.000+08:00 |
DURATION | 计算两个时间点的间隔 | 开始:2019-12-01 结束: 2024-01-08 时间差转换为: 年 | 5 |
EXTRACT | 获取时间中指定的部分。如果是获取星期几,输出0到6的整数,0 表示星期日 | 时间:13:38:00.000+08:00 单位: 时 | 13 |
💡
- 日期:
2024-01-08
代表年-月-日。 T
是日期和时间的分隔符- 时间:
13:14:00.246046
代表小时:分钟:秒.毫秒
- 时区:
+08:00
代表这个时间是在UTC(协调世界时)基础上加8小时的时区,这通常对应于中国标准时间(CST)。
地理位置
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
DISTANCE | 计算两个地理位置之间的距离。单位可选择为:米、千米、英里 | 位置1:[120.2934,30.3150] 位置2: [120.2934,31.3150] 单位:千米 | 866 |
GET_VALUE_FROM_GEO_POINT | 从地理位置(经纬度)中获取经度或纬度 | 位置:[120.2934,30.3150] 类型: 纬度 | 30.3150 |
JSON 处理方法
名称 | 描述 | 示例输入 | 示例输出 |
---|---|---|---|
JSON_EXTRACT_PATH | 从json中获取数据 | 输入Json:{"data": {"foo": "bar"}} 路径: data.foo | "bar" |
条件数据
Zion 支持在组件和行为中使用条件数据,允许根据特定条件动态选择和展示数据。条件数据可以用于实现复杂的业务逻辑,例如根据用户角色、状态或其他条件展示不同的内容。
条件数据的配置方式如下:

具体的例子如下:
{
"conditions": [
{
"case": "case1",
"condition": "user.isLoggedIn",
"data": {
"text": "欢迎回来,用户!"
}
},
{
"case": "case2",
"condition": "!user.isLoggedIn",
"data": {
"text": "请登录以继续。"
}
}
]
}
在上述示例中,根据用户是否登录的状态,展示不同的文本内容。
Last updated on