过滤运算符参考¶
过滤字段写为 对象别名.列名。每个运算符对每一行求值为真或假:为真的行被保留,为假的行被排除;空值如何参与判断见各运算符说明。同一条件组内使用 AND,不同条件组之间使用 OR。
运算符一览¶
| 运算符 | 值1 | 值2 | 判断 | 示例值 |
|---|---|---|---|---|
= |
必填 | — | 等于 | paid |
!= |
必填 | — | 不等于 | cancelled |
> |
必填 | — | 大于 | 100 |
>= |
必填 | — | 大于等于 | 100 |
< |
必填 | — | 小于 | 100 |
<= |
必填 | — | 小于等于 | 100 |
IN |
必填 | — | 属于值列表 | paid,shipped |
NOT IN |
必填 | — | 不属于值列表 | cancelled,closed |
BETWEEN |
必填 | 必填 | 位于闭区间,包含两端 | 100、500 |
LIKE |
必填 | — | 整个字段值匹配模式 | 华% |
NOT LIKE |
必填 | — | 整个字段值不匹配模式 | %测试% |
IS NULL |
— | — | 是空值 | 留空 |
IS NOT NULL |
— | — | 不是空值 | 留空 |
运算符不区分大小写;建议使用模板下拉框中的大写形式。
比较运算符¶
=、!=、>、>=、<、<= 使用“值1”。例如:
| 字段 | 运算符 | 值1 |
|---|---|---|
| o.amount | >= | 100 |
如果源字段是数值列,而 Excel 配置单元格被读取为文本,ExcelFlow 会尝试将值转换成整数或浮点数;日期时间列会使用 Pandas 日期解析。其他情况按原值比较。
普通比较最终会用 fillna(False) 将 Pandas 的缺失判断结果按“不满足”处理。不过不同源类型对 != 与空值的原始比较结果可能不同;需要明确判断空值时,应使用 IS NULL 或 IS NOT NULL,不要依赖普通比较的空值行为。
IN 与 NOT IN¶
“值1”使用英文逗号分隔:
paid,shipped,completed
列表项会去除首尾空格,空项会被忽略。列表中的每个值同样按源字段类型做有限转换。
BETWEEN¶
“值1”是下界,“值2”是上界,两个边界都包含在结果中:
| 字段 | 运算符 | 值1 | 值2 |
|---|---|---|---|
| o.amount | BETWEEN | 100 | 500 |
等价于 o.amount >= 100 AND o.amount <= 500。
LIKE 与 NOT LIKE¶
模式支持两个通配符:
| 通配符 | 含义 | 示例 |
|---|---|---|
% |
任意数量的任意字符,包括零个字符 | 华% 匹配以“华”开头的值 |
_ |
恰好一个任意字符 | A_01 匹配 AB01 |
匹配覆盖整个字段值,并区分大小写。例如 %测试% 表示任意位置包含“测试”。除 %、_ 外的字符(包括正则表达式中的特殊字符)按普通字符处理。字段在匹配前转换为 Pandas 字符串类型。
空值的 LIKE 结果为不匹配;当前 NOT LIKE 是对该结果直接取反,因此空值会满足 NOT LIKE。如果不希望保留空值,应在同一条件组再加一条 IS NOT NULL。
空值运算符¶
IS NULL 与 IS NOT NULL 不读取“值1”和“值2”:
| 字段 | 运算符 | 值1 | 值2 |
|---|---|---|---|
| c.customer_name | IS NULL |
这类条件常用于检查 LEFT JOIN 后未找到匹配记录的字段。
条件组示例¶
| 条件组 | 条件序号 | 字段 | 运算符 | 值1 |
|---|---|---|---|---|
| 1 | 1 | o.status | = | paid |
| 1 | 2 | o.amount | >= | 100 |
| 2 | 1 | o.region | IN | 华东,华南 |
实际逻辑为:
(o.status = paid AND o.amount >= 100)
OR
(o.region IN [华东, 华南])