公式

本文详解介绍黑帕云中的所有公式以及其使用方式。

公式是什么

公式是通过字段运算符号或(和)函数自动计算出结果的数据。 从而减少人工运算成本,避免人工录入错误。

比如要计算订单总费用,设置好公式:单价字段数量字段后,录入数据时,只需要填写单价和数量这两个字段,总费用就能根据公式自动计算出来。


CONCATENATE

连接字段与字段或字段与字符。运算结果是文本类型

书写规范

CONCATENATE({字段1}, "字符", {字段2}, {字段3}......)

参数说明

{字段n}是从当前业务表已有字段名称中选择
字符前后需要用半角引号

结果示例

// 文本拼接
公式:CONCATENATE("张三", "35")
运算结果:张三35

// 文本类型的 {字段} 与文本拼接,{姓名}字段填入的值:张三
公式:CONCATENATE({姓名}, "35")
运算结果:张三35

// 文本类型的 {字段} 拼接,{姓名}字段填入的值:张三,{年龄}字段填入的值:35
公式:CONCATENATE({姓名},{年龄})
运算结果:张三35

公式:CONCATENATE({姓名}, "—", {年龄}),{姓名}字段填入的值:张三,{年龄}字段填入的值:35
运算结果:张三—35

//  特例:拼接双引号
公式:CONCATENATE(" \" ", "张三", " \" ")
运算结果:" 张三 "

IFS

检查是否满足一个或多个条件,且返回符合第一个 TRUE 条件的值。

书写规范

IFS(条件1,值1, 条件2,值2, ...)  

结果示例

// {成绩}字段的值:70
公式:
IFS(
  {成绩} < 64, "D",
  {成绩} < 73, "C",
  {成绩} < 85, "B",
  {成绩} >= 85, "A",
)
运算结果:C

SWITCH

根据值列表计算要检查的值并返回与第一个匹配值对应的结果。如果没有匹配项,则返回可选默认值。

书写规范

SWITCH(要检查的值, [条件1,值1], [条件2,值2], ...,默认值)

结果示例

// {一周第几天}字段的值:4
公式:
SWITCH({一周第几天},
  1, "星期一",
  2, "星期二",
  3, "星期三",
  4, "星期四",
  5, "星期五",
  6, "星期六",
  "星期日"
)
运算结果:星期四

IF

根据条件给出判断结果。如果满足返回真值,不满足返回假值

书写规范

IF(条件, 真值, 假值)

结果示例

//{水温}的值:53
公式:IF({水温} > 40, "热水","凉水")
运算结果:热水

支持嵌套书写

书写规范

IF (条件1,  条件1真值, IF(条件2, 条件2真值, 条件2假值))

结果示例

//{水温}字段的值:35
公式:IF({水温} > 40, "热水", IF({水温} > 20,"常温水",凉水"))
运算结果:常温水

AND

如果所有参数都为真,返回1,否则返回0。

书写规范

AND(logical_1,logical_2...logical_n)

结果示例

//{年龄}字段的值:40,{技能}字段的值:一级
公式:AND({年龄}>35,{技能}="一级")
运算结果:1

与IF()嵌套使用

结果示例

//{年龄}字段的值:40,{技能}字段的值:一级
公式:IF(AND({年龄}>35,{技能}="一级")=1,6000,5000)
运算结果:6000

OR

只要表达式中至少一个为真,返回1,全为假返回0。

书写规范

OR(logical_1,logical_2...logical_n)

结果示例

//{年龄}的值:28,{技能}字段的值:一级
公式:OR({年龄}>35,{技能}="一级")
运算结果:1

与IF()嵌套使用

结果示例

//{年龄}的值:28,{技能}字段的值:一级
公式:IF(OR({年龄}>35,{技能}="一级")=1,6000,5000)
运算结果:6000

NOT

条件为真时,返回0,条件为假时,返回1。

书写规范

 NOT(logical)

结果示例

//{年龄}字段的值:50
公式:NOT({年龄}>30)
运算结果:1

BLANK

用于判断值是否为空,可以参与逻辑运算。

书写规范

BLANK()

结果示例

//{报名日期}字段为空
公式:IF({报名日期}=BLANK(),"未报名","已报名")
运算结果:未报名

//{年龄}字段值:6
IF({年龄}>=18,"已成年",BLANK())
运算结果:(空值)

MIN

返回输入数字中最小的数字。

书写规范

MIN(num_1,num_2,...num_n)

结果示例

//返回数字的最小值
公式:MIN(1,2,5,4)
运算结果:1

//返回多个字段的最小值,{男生人数}字段值:20,{女生人数}字段值:36
公式:MIN({男生人数},{女生人数})
运算结果:20

//返回数字与字段的最小值,{男生人数}字段值:20
公式:MIN({男生人数},8)
运算结果:8

MAX

返回输入数字中最大的数字。

书写规范

MAX(num_1,num_2,...num_n)

结果示例

//返回数字的最大值
公式:MAX(1,2,5,4)
运算结果:5

//返回多个数值字段的最大值,{男生人数}字段值:20,{女生人数}字段值:36
公式:MAX({男生人数},{女生人数})
运算结果:36

//返回数字与数值字段的最大值,{男生人数}字段值:20
公式:MAX({男生人数},8)
运算结果:20

SUM

返回输入数字的和。

书写规范

SUM(num_1,num_2,...num_n)

结果示例

//计算多个输入的数字
公式:SUM(1,3,7)
运算结果:11

//计算多个数值字段,{男生人数}字段值:20,{女生人数}字段值:36
公式:SUM({男生人数},{女生人数})
运算结果:56

//计算数值字段与数字的值,{男生人数}字段值:20
公式:SUM({男生人数},14)
运算结果:34

AVERAGE

返回输入数字的平均值。

书写规范

AVERAGE(num_1,num_2,...num_n)

结果示例

//对数字计算平均值
公式:AVERAGE(1,2,5,4)
运算结果:3

//对数值字段计算平均值,{男生人数}字段值:20,{女生人数}字段值:36
公式:AVERAGE({男生人数},{女生人数})
运算结果:28

//对数值字段与数字计算平均值,{男生人数}字段值:20
公式:公式:AVERAGE({男生人数},10)
运算结果:15

ABS

返回输入数字的绝对值。

书写规范

ABS(number)

结果示例

公式:ABS(-8)
运算结果:8

CEILING

将输入数字向上取整。

书写规范

CEILING(number)

结果示例

公式:CEILING(2.1)
运算结果:3

FLOOR

将输入数字向下取整。

书写规范

FLOOR(number)

结果示例

公式:FLOOR(2.9)
运算结果:2

MOD

返回 num1 除以 num2 的余数。

书写规范

MOD (num_1,num_2)

结果示例

//对7除以2取余数
公式:MOD(7,2)
运算结果:1

VALUE

返回将 string 转为数字的值。

书写规范

VALUE(string)

说明

主要应用于将文本字段进行数学运算,先要将该文本转为数字。

结果示例

//{单价}:100 ,{单价}类型为文本
公式:VALUE({单价})*2
运算结果:200

MID

返回 string 从 start_num 后 n 个字符。

书写规范

 MID(string, start_num,n)

结果示例

公式:MID("HIPA",2,1)
运算结果:P

//{地址}:四川省成都市锦江区
公式:MID({地址},3,3)
运算结果:成都市

LEFT

返回 string 左边 n 个字符。

书写规范

LEFT(string,n)

结果示例

公式:LEFT("HIPA",2)
运算结果:HI

//{地址}:四川省成都市锦江区
公式:LEFT({地址},3)
运算结果:四川省

返回 string 右边 n 个字符。

书写规范

RIGHT(string,n)

结果示例

公式:RIGHT("HIPA",2)
运算结果:PA

//{地址}:四川省成都市锦江区
公式:RIGHT({地址},3)
运算结果:锦江区

ID

根据身份证号返回所选的年龄、性别、生肖、生日等信息。

书写规范

ID({身份证}, n)

参数说明

n的取值范围及含义:

取值 含义
0 获得年龄
1 获得性别
2 获得出生年月日
3 获得星座
4 获得生肖

结果示例

//计算性别,{身份证}:130303192010138454
公式:ID({身份证}, 1)
运算结果:男

//计算出生年月日,{身份证}:130303192010138454
公式:ID({身份证}, 2)
运算结果:1920-10-13

//计算生肖,{身份证}:130303192010138454
公式:ID({身份证}, 4)
运算结果:猴

FIND

返回一个字符串在另一个字符串中出现的起始位置(区分大小写),找不到返回0。

书写规范

FIND(find_string, within_string, start_num)

参数说明

find_string:要查找的字符串
within_string:从哪里查找字符串
start_num:从第几个字符开始找,如果start_num不填,默认从第 1 位开始查找

结果示例

//空格也算一个字符
公式:FIND("World", "Hello World")
运算结果:7

//找不到返回0
公式:FIND("x", "NO")
运算结果:0

//查找第5个字后面第1个“化肥”出现的位置,{绕口令}:黑化肥发灰灰化肥发黑变成花化肥,{查找的词}:化肥
公式:FIND({绕口令},{查找的词}, 5)
运算结果:7

UNIQUE

返回数组中的唯一值。

书写规范

UNIQUE([数组])

结果示例

//{姓名}字段类型是:引用字段,内容:张三,张三,李四,李四,张三,王五
公式:UNIQUE({姓名})
运算结果:张三,李四,王五

DATETIME_DIFF

计算 2 个日期之间的差值。

书写规范

DATETIME_DIFF({结束日期}, {开始日期}, '时间单位')

参数说明

'时间单位'是返回值的单位,可输入以下单位:

含义 时间单位
's'
分钟 'm'
小时 'h'
'd'
'w'
'M'(以 30 天为一个月)
季度 'Q'(以 90 天为一个季度)
'y'(以 365 天为一年)

结果示例

//计算订单创建到实际收款的间隔天数,{订单创建日期}:2021-10-15,{收款日期}:2021-10-18
公式:DATETIME_DIFF({收款日期}, {订单创建日期}, 'd')
运算结果:3

DATETIME_PARSE

返回字符串用 input_format 格式、timezone 时区进行解析的日期,timezone可不填

书写规范

DATETIME_PARSE(string,input_format,timezone)

参数说明

input_format 格式:

可输入 `"YYYY"`, `"MM"`, `"DD"`, `"hh"`, `"mm","ss"`

timezone 格式:

可输入 Olson 时区标识符(如: Asia/Shanghai ); 

UTC偏移量(+/-[hh]:[mm]  或 +/-[hh][mm]  或 +/-[hh]);「UTC」/「GMT」

结果示例

公式:DATETIME_PARSE(20200818 23:59:59,YYYYMMDD hh:mm:ss)
运算结果:2020-08-18 23:59:59

DATEADD

将日期 date 增加 n 个 unit 的时间

书写规范

DATEADD(date, n, unit)

参数说明

unit 参数必须是区分大小写的 "s", "m", "h", "d", "w", "M", "Q", "y"
"s":秒
"m":分钟
"h":小时
"h":天
"w":周
"M":月
"Q":季度
"y":年

结果示例

//为日期 2020-01-20 10:00:00 增加 2 个月
公式:DATEADD(2020-01-20 10:00:00, 2, "M")
运算结果:2020-03-20 10:00:00

//为某个日期字段增加时间,{下单时间}:2021-11-15
公式:DATEADD({下单时间}, 2, "d")
运算结果:2021-11-17

NOW

返回当前的时间,含日期与精确到分的时间

书写规范

NOW()

使用说明

1.()中不用填写参数,直接使用NOW()。
2.通常与其他函数如 DATETIME_DIFF() 一起使用,返回某个日期与今天的时间差值。

结果示例

//返回当前时间
公式:NOW()
运算结果:2021-06-18 14:13 //当前时间

//计算{截止日期}与当前的差值,{截止日期}:2021-06-20
公式:DATETIME_DIFF({截止日期},NOW(),'d')//当前时间:2021-06-18 14:13
运算结果:2

TODAY

返回当前日期,不包含时间

使用说明

1.()中不用填写参数,直接使用TODAY()。
2.通常与其他函数如 DATETIME_DIFF() 一起使用,返回某个日期与今天的时间差值。

结果示例

//返回当前日期
公式:TODAY()
运算结果:2021-06-18  //当前日期

WEEKDAY

返回对应日期是每周的第几天,返回值为整数。默认返回从1(周日)到7(周六)的数字。

书写规范

WEEKDAY(date, return_type)

参数说明

date:日期
return_type:
1.(默认值): 每周从周日开始,返回1(星期天)-7(星期六)
2.  每周从周一开始,返回1(星期一) - 7(星期天)

结果示例

公式:WEEKDAY(2021-01-01)
运算结果:6

公式:WEEKDAY(2021-01-01,1)
运算结果:6

公式:WEEKDAY(2021-01-01,2)
运算结果:5

NETWORKDAYS

返回两个日期之间的工作日天数(不含法定节假日)。

书写规范

NETWORKDAYS(start_date, end_date, holidays)

参数说明

start_date :开始日期
end_date : 结束日期
holidays : 可写两个日期之间的节假日天数,返回两个日期之间的工作日的天数减去该参数值

结果示例

公式:NETWORKDAYS(2020-12-28, 2021-01-04, 0)
运算结果:6

公式:NETWORKDAYS(2020-12-28, 2021-01-04, 1)
运算结果:5

CREATED_TIME

返回这条数据创建时间。格式:yyyy-MM-dd HH:mm

书写规范

CREATED_TIME()

LASTMODIFIEDTIME

返回这条数据上次修改时间。格式:yyyy-MM-dd HH:mm

书写规范

LAST_MODIFIED_TIME()

结果示例

公式:LAST_MODIFIED_TIME()
运算结果:2021-02-07 15:03 //数据上次修改的时间

YEAR

返回日期中的年。

书写规范

YEAR(date)

结果示例

//{支出日期}字段类型是日期,填写的值为:2021-06-08
公式:YEAR({支出日期})
运算结果:2021

公式:YEAR(1998-11-19)
运算结果:1998

MONTH

返回日期中的月。

书写规范

MONTH(date)

结果示例

//{支出日期}字段类型是日期,填写的值为:2021-06-08
公式:MONTH({支出日期})
运算结果:6

公式:MONTH(1998-11-19)
运算结果:11

DAY

返回日期中的日。

书写规范

DAY(date)

结果示例

//{支出日期}字段类型是日期,填写的值为:2021-06-08
公式:DAY({支出日期})
运算结果:8

公式:DAY(1998-11-19)
运算结果:19

最后更新时间: 06月18日 16:29