DBeaver对象名称过滤核心依赖数据库导航器顶部搜索框,而非“筛选设置”菜单;按Ctrl+Shift+D(Win/Linux)或Cmd+Shift+D(Mac)聚焦该框,输入关键词(如user)、通配符(如user%)或类型限定(如table:user)即可实时全路径匹配。

直接说结论:DBeaver 的对象名称过滤主要靠数据库导航器顶部搜索框,不是靠“筛选设置”菜单里的静态配置——后者只控制显示/隐藏类型(如是否显示视图、函数),不参与名称匹配。
导航器搜索框才是真·按名过滤的核心入口
很多人翻遍 Preferences → Database → Navigator 找“名称过滤规则”,结果发现只有勾选“Show system objects”或“Show views”这类开关。那是因为名称过滤是实时的、无状态的,由搜索框驱动:
- Windows/Linux 按
Ctrl+Shift+D,Mac 按Cmd+Shift+D,焦点自动落到导航器顶部搜索框 - 输入任意字符串(如
user),它会即时匹配所有层级中对象名含该子串的项(表、视图、列、索引等) - 支持空格分隔多关键词,例如
pay status会同时命中payment_status和user_payment_status - 若当前连接未展开模式(schema),搜索可能返回空——先点开目标数据库和模式节点再搜
通配符搜索:用 % 和 _ 做 SQL 风格模糊匹配
搜索框原生支持 JDBC 标准的 LIKE 语法,背后调用的是 SQLUtils.makeLikePattern():
-
user%→ 匹配users、user_logs,但不匹配app_user -
%log%→ 匹配error_log、audit_log_table -
_t%→ 匹配第二个字符是t的对象,如at_users、bt_orders - 注意:
%和_是字面量通配符,不是正则;想搜真实百分号得写成\%并启用转义(需在Preferences → Database → Navigator → Search中勾选Enable escape sequences)
类型限定搜索:用 type:keyword 精准锁定对象类别
当库中对象混杂(比如同名的表和视图共存),光搜名字容易误点。这时加类型前缀可强制范围:
-
table:user→ 只列出表(不含视图、序列) -
view:log→ 仅过滤视图 -
column:id→ 在所有列中搜含id的字段名(需已展开某张表) - 可用类型包括:
table、view、procedure、function、column、index,大小写不敏感 - 这个功能依赖驱动对元数据类型的识别能力,Oracle 或旧版 SQL Server 驱动可能不支持全部类型
自定义过滤器只管“显隐”,不管“搜索”
Preferences → Database → Navigator → Filters 里设置的过滤器,作用是控制对象树默认展开时“哪些类型不显示”,不是搜索工具:
- 比如勾选
Exclude system tables,那么pg_catalog下所有表在树里直接不出现 - 添加一个自定义过滤器,设
Name patterns = user_*, temp_*+Exclude = true,效果是这些前缀的对象永远不进树形列表 - 但它不会影响搜索框行为:即使你排除了
temp_*,在搜索框里输temp仍能搜出它们(只要连接权限允许读取) - 真正影响搜索结果的,是连接本身的权限和驱动是否加载了对应元数据
最易被忽略的一点:搜索框的匹配逻辑是“路径级全量扫描”,不是只查当前展开节点。但如果你连的是 PostgreSQL 且没开 public 模式,或者 Oracle 连接没指定 defaultSchema,它可能根本读不到那些表的元数据——这时候搜什么都没用,得先检查连接配置里的 schema 设置和用户权限。

















