NocoDB 公式与计算字段实战:内置函数清单助你彻底告别Excel
【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb
NocoDB 是一款免费、可自托管的 Airtable 替代工具,内置强大的公式(Formula)计算字段能力:无需编写代码,用 70 多个内置函数即可完成求和、日期推算、条件判断、字符串拼接与正则处理,让原本依赖 Excel 的复杂计算直接在你的数据库表格里完成。本文整理了一份完整的 NocoDB 公式内置函数清单,并给出 5 个高频实战场景,帮助你快速上手。
什么是 NocoDB 公式字段?
在 NocoDB 中,公式字段是一种只读的计算列:它的值由同一行其他字段的值实时推导得出,并直接下推到你连接的任意数据库(PostgreSQL、MySQL、SQLite、SQL Server、Oracle 等)执行计算。
它的核心特点:
- 📊实时计算:数据一变,公式结果立即更新,无需手动刷新
- 🔒只读安全:公式列不可手动编辑,杜绝"手滑改错结果"
- 🌐跨库兼容:同一套公式语法自动翻译成不同数据库的 SQL,前端提示与后端执行完全一致
- 🎯可视化编辑:公式编辑器自动识别字段名(
{字段名})、高亮函数关键字、实时校验错误位置
计算公式的字段清单定义在 formulas.ts,编辑器界面由 FormulaOptions.vue 和 FormulaInputHelper.vue 提供。
3 步创建第一个计算字段
创建公式字段的步骤非常简单:
- 打开一张表,点击列头右侧的+号新增字段
- 字段类型选择公式(Formula),在公式编辑框中输入表达式,字段名用花括号引用,例如
{单价} * {数量} - 输入时编辑器会实时校验——语法错误会直接标出错误位置;保存后可在"格式化"选项卡中把结果显示为货币、百分比、日期等样式
小技巧:公式结果默认按数据类型自动展示,你也可以在格式化选项卡中为数字结果指定货币符号、小数位数、进度条样式等,让它看起来像真正的报表。
NocoDB 内置公式函数完整清单
以下是 NocoDB 当前支持的全部内置函数,按用途分组整理,建议收藏备用 📌
数学与数值函数
| 函数 | 作用 |
|---|---|
ADD/AVG/MIN/MAX | 加法、平均值、最小值、最大值 |
ROUND/ROUNDUP/ROUNDDOWN | 四舍五入 / 向上取整 / 向下取整(可指定小数位) |
CEILING/FLOOR | 向上 / 向下取整到整数 |
MOD/ABS/SQRT | 取余、绝对值、平方根 |
POWER/EXP/LOG | 幂运算、指数、对数 |
EVEN/ODD | 取不小于/不大于参数的偶数、奇数 |
COUNT/COUNTA/COUNTALL | 统计数字、非空值、参数总数 |
VALUE | 把文本转换为数字(支持百分号) |
INT/FLOAT | 取整数部分 / 转浮点数 |
日期与时间函数
| 函数 | 作用 |
|---|---|
NOW | 当前日期时间 |
DAY/MONTH/YEAR/HOUR | 提取日、月、年、小时 |
WEEKDAY/WEEKNUM | 星期几(周一为 0)、第几周(与 Excel 兼容) |
DATEADD | 日期加减,支持 day/week/month/year/hour/minute/second 单位 |
DATETIME_DIFF | 计算两个时间点的差值(秒到年多种单位) |
DATESTR/DATETIME_FORMAT | 转日期文本 / 自定义日期格式 |
CREATED_TIME/LAST_MODIFIED_TIME | 记录创建时间 / 最后修改时间(可精确到指定字段) |
日期函数的合法单位校验逻辑见 commonFns.ts,不同数据库的日期函数翻译实现分别在 pg.ts 与 sqlite.ts 中。
字符串函数
| 函数 | 作用 |
|---|---|
CONCAT/REPEAT | 文本拼接 / 重复文本 |
LEFT/RIGHT/MID/SUBSTR | 截取左侧、右侧、中间字符 |
LEN/TRIM | 文本长度 / 去除首尾空格 |
UPPER/LOWER | 转大写 / 转小写 |
REPLACE/SEARCH | 替换文本 / 查找子串位置 |
URL/URLENCODE | 构造链接 / URL 编码 |
STRING/BLANK | 转文本 / 返回空值 |
逻辑与条件函数
| 函数 | 作用 |
|---|---|
IF | 条件判断:IF(条件, 真值, 假值) |
SWITCH | 多分支选择,适合"一值对多结果"场景 |
AND/OR/XOR | 逻辑与 / 逻辑或 / 逻辑异或 |
ISBLANK/ISNOTBLANK | 判断为空 / 非空 |
ISNULL/ISNOTNULL | 判断为 NULL / 非 NULL |
TRUE/FALSE | 布尔常量 |
正则、哈希与 JSON 函数
| 函数 | 作用 |
|---|---|
REGEX_MATCH | 正则匹配判断 |
REGEX_EXTRACT | 正则提取片段 |
REGEX_REPLACE | 正则替换 |
MD5/SHA256/SHA512 | 生成文本哈希值 |
JSON_EXTRACT | 从 JSON 字段中按路径提取值 |
数组函数
| 函数 | 作用 |
|---|---|
ARRAYUNIQUE | 数组去重 |
ARRAYSORT | 数组排序(asc/desc) |
ARRAYCOMPACT | 移除数组空值 |
ARRAYSLICE | 截取数组片段 |
5 个高频实战场景
场景一:订单金额自动汇总
{单价} * {数量}结果在格式化选项卡中设为"货币",配合ROUND({单价} * {数量}, 2)即可得到两位小数的应付金额——再也不用在 Excel 里手动乘一遍。
场景二:状态标记与条件标签
IF({状态} = "已完成", "✅ 已交付", IF({状态} = "进行中", "⏳ 处理中", "⚪ 待开始"))IF支持嵌套,多分支较多时改用SWITCH更清晰:
SWITCH({优先级}, "高", "🔴", "中", "🟡", "低", "🟢")场景三:日期推算与账期计算
DATEADD({下单日期}, 30, "day") // 账期截止日 DATETIME_DIFF({完成时间}, {开始时间}, "hour") // 工时(小时) IF(WEEKDAY({交付日期}) > 4, "已超时", "正常") // 周末交付预警场景四:工单号自动拼接
CONCAT("SO-", {YEAR(下单日期)}, "-", {REPEAT("0", 5 - LEN({序号}))}, {序号})生成SO-2026-00042这样的规范单号;URLENCODE还能把中文参数安全地拼进链接里。
场景五:数据校验与唯一指纹
REGEX_MATCH({邮箱}, "^[\\w.-]+@[\\w-]+(\\.[\\w-]+)+$") // 邮箱格式校验 MD5(CONCAT({姓名}, "{手机号}")) // 生成客户唯一指纹公式结果还能用于过滤、排序和看板分组,例如按公式列"已超时/正常"分组,即可瞬间得到一张风险清单。
公式字段 vs 查找/汇总字段:怎么选?
| 能力 | 公式字段 | 查找字段(Lookup) | 汇总字段(Rollup) |
|---|---|---|---|
| 计算范围 | 同一行内的多个字段 | 跨表引用关联记录的某个字段 | 对关联记录的多个值聚合(求和、计数等) |
| 典型例子 | {单价}*{数量} | 显示订单对应客户的电话 | 汇总一个客户所有订单总额 |
| 是否可编辑 | ❌ 只读 | ❌ 只读 | ❌ 只读 |
经验法则:行内计算用公式,跨表取数用查找,跨表统计用汇总。三者可以自由组合嵌套,例如"用公式把 Lookup 取来的文本转大写"。
常见问题 FAQ
Q1:公式为什么报错,如何定位?公式编辑器会在输入时实时校验,错误会标注在出错字符的位置上;字段名不存在、括号不配对、函数参数类型不符是三类最常见错误。语法工具函数见 formulaUtils.ts。
Q2:哪些字段类型不能作为公式的输入?二维码、条码、按钮这类非数据字段不支持参与公式计算,其余数据字段均可自由引用。
Q3:公式在不同数据库中结果会不一样吗?不会。NocoDB 会把同一套公式自动翻译为对应数据库的 SQL 执行(实现位于 functionMappings/ 目录),你只需写一次。
Q4:公式结果能用来过滤和排序吗?可以。公式列和普通列一样支持过滤、排序、分组,是构建"风险清单""到期提醒"等视图的关键。
写在最后
NocoDB 的公式计算字段把 Excel 用户最依赖的能力——条件判断、日期推算、文本拼接、正则校验——完整搬进了可自托管的在线数据库,70+ 内置函数覆盖了绝大多数日常计算需求。配合看板、日历、表单等多种视图(项目说明参见 README.md),你完全可以告别"导出 → Excel 算一遍 → 再导回去"的低效循环,让所有计算都发生在数据的第一现场。
【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考