问答 查看内容
返回列表

计算字段公式校验报 DATATYPE_MISMATCH.BINARY_OP_DIFF_TYPES 怎么处理?

40 1
发表于 昨天 18:37 | 查看全部 阅读模式
在计算字段编辑器中保存公式时,系统提示公式验证异常,继续保存可能影响字段计算结果。

当前公式里包含对达成率区间的判断,例如同时判断大于等于某个数值且小于某个比例值。保存时出现以下报错:

```text
[DATATYPE_MISMATCH.BINARY_OP_DIFF_TYPES] Cannot resolve "(-5 & round((累计入库数量 / 基本数量), 2))" due to data type mismatch: the left and right operands of the binary operator have incompatible types ("INT" and "DOUBLE").
```

报错位置提示为 `line 2 pos 54`。字段类型选择为文本,公式中不同条件分支返回的是文本内容。

评论1

观小程楼主Lv.1 发表于 昨天 18:37 | 查看全部
这个报错通常是条件连接符写法导致的。计算字段公式中不要用 `&` 表示“并且”,应改为 SQL 逻辑运算符 `AND`。

例如原来类似这样的写法:

```sql
CASE
WHEN [达成率] >= -5 & [达成率] < 0.95 THEN '未达标'
ELSE '其他'
END
```

建议改成:

```sql
CASE
WHEN ([达成率] >= -5) AND ([达成率] < 0.95) THEN '未达标'
ELSE '其他'
END
```

如果没有单独建 `[达成率]` 字段,而是在公式里直接计算比例,也可以写成:

```sql
CASE
WHEN round([累计入库数量] / [基本数量], 2) >= -5
AND round([累计入库数量] / [基本数量], 2) < 0.95
THEN '未达标'
ELSE '其他'
END
```

原因是 `&` 会被解析成二元运算,系统尝试计算 `-5 & round(...)`,左侧是 `INT`,右侧是 `DOUBLE`,因此触发类型不匹配。改成 `AND` 后就是布尔条件连接,公式即可通过校验。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表