DBeaver结果集过滤支持LIKE/ILIKE语法,需加引号和通配符,如name LIKE '%admin%';不依赖数据库执行,MySQL下ILIKE由Java层处理;禁止函数嵌套,多条件用AND/OR连接,未指定字段时默认全列匹配。

过滤输入框里直接写 LIKE 表达式就行
不需要重跑 SQL,DBeaver 的结果集过滤面板原生支持 LIKE 语法。只要在结果集上方的过滤输入框中输入符合规范的表达式,按 Enter 就能实时筛选。
常见错误是把 LIKE 当成普通关键词输(比如只输 南),结果匹配不到——它必须配合通配符和引号使用。
-
name LIKE '%admin%':匹配 name 字段中任意位置含 "admin" 的行 -
status ILIKE 'act%':不区分大小写,匹配以 "act" 开头的 status 值(ILIKE在 PostgreSQL 中有效;MySQL 用户请用LIKE+LOWER()或确保字段 collation 支持大小写不敏感) -
city LIKE '_京':匹配倒数第二位是“京”的两字城市名(如“北京”“天津”不匹配,“南京”匹配)
LIKE 和 ILIKE 的数据库兼容性差异
DBeaver 的过滤表达式最终由本地解析器转为内存过滤逻辑,并不下发到数据库执行,所以 ILIKE 在 MySQL 连接下也能用——但行为取决于 DBeaver 内部字符串比较策略,不是数据库原生语义。
这意味着:
- MySQL 连接下用
ILIKE,实际是 Java 层调用String.equalsIgnoreCase(),对中文、英文都生效 - PostgreSQL 连接下用
ILIKE,会走数据库侧逻辑(如果过滤被下推到查询重写阶段,但结果集过滤默认不重发 SQL) - 想严格按数据库规则匹配?得在原始 SQL 里写
WHERE name LIKE ?,而不是依赖结果集过滤
别漏掉引号和空格,否则解析失败
DBeaver 的过滤表达式解析器对格式敏感。下面这些写法会导致条件被忽略或报错:
- ❌
name LIKE %admin%(缺单引号 → 解析失败,过滤无效) - ❌
nameLIKE'%admin%'(LIKE和前面字段名之间没空格 → 被识别为一个非法标识符) - ❌
name like '%admin%'(like小写 → 大部分版本会识别,但不推荐,DBeaver 文档明确要求大写运算符) - ✅
name LIKE '%admin%'(标准写法,最稳)
另外注意:中文字符无需 URL 编码或 Unicode 转义,直接输入汉字即可,比如 region LIKE '%华东%' 完全有效。
复杂模糊组合建议用 AND 拆开写,别嵌套函数
结果集过滤不支持 CONCAT()、UPPER()、TRIM() 这类函数调用。试图写 UPPER(name) LIKE '%ADMIN%' 会直接报错或静默失效。
替代方案是用逻辑组合+多条件:
- 要查 “张” 姓且手机号末尾是 “1234”:
name LIKE '张%' AND phone LIKE '%1234' - 要查名称含 “测试” 或 “demo”:
name LIKE '%测试%' OR name LIKE '%demo%' - 排除已归档记录同时模糊匹配关键词:
status != 'archived' AND title LIKE '%report%'
所有条件都在同一行输入框内写,用空格分隔关键词,DBeaver 会自动识别运算符优先级。
真正容易被忽略的是:结果集过滤的LIKE 是逐字段做独立匹配的,不是跨列联合搜索。比如你输 LIKE '%error%'(没指定字段),DBeaver 默认对**所有可见列**分别执行 column LIKE '%error%',只要任一列命中就保留该行——这点和写 SQL 的 WHERE 逻辑不同,也容易造成误判。

















