GoLand 2025.2 Help

SQL 模板

运行结构化搜索时,您会查找可能由搜索模板表示的值。 如果搜索模板与源代码的某一部分匹配,则符合用户定义模板的表达式将被高亮显示。 搜索模板是由文本、变量、筛选器、作用域与上下文组成的搜索查询。 借助所有这些工具,您可以缩小搜索范围,并获得更准确的结果。

搜索工具

变量 是一组用美元符号括起来的字符(例如, $tag$$anyCharactersYouWant$)。 未设置筛选器和上下文的变量等同于整个语句。

筛选器 是针对变量和搜索模板的用户自定义条件。 通过使用筛选器,您可以检查变量出现的次数、检查值类型、将变量与纯文本或正则表达式匹配,并应用 Groovy 脚本。 完整筛选器列表请参见 搜索模板、修饰符和脚本约束

如果我们应用 类型 筛选器并使用 [string] 值,我们将在 SELECT 语句中找到所有字符串值。 但若要在表定义(CREATE TABLE 语句)中找到所有字符串类型,您需要应用 类型 上下文。 设置上下文时,您同样使用筛选器。 但与筛选器应用于特定变量不同,上下文筛选器应用于整个搜索模板。

使用筛选器的结构化搜索

上下文 是帮助搜索引擎识别变量的内置内部模板。 上下文仅用于 SQL,以消除语言歧义。 通过使用上下文,您可以明确告诉搜索引擎搜索变量的位置和内容。 您可以为搜索模板设置以下上下文:

  • 表达式 :一个或多个值、运算符或 SQL 函数,计算结果为一个值。 使用 表达式 上下文时,IDE 会在类似 SELECT $expression_1$ FROM table_name where $expression_2$ 的结构中查找 $expression_1$$expression_2$

  • 类型 :可以存储在表列中的值的类型(例如, varchar(100))。 使用 类型 上下文时,IDE 会在类似 CREATE TABLE table_name (id_1 $type_1$, id_2 $type_2$) 的结构中查找 $type_1$$type_2$

  • 查询子句 :查询子句,如 DISTINCTFROMWHEREORDER BYGROUP BYHAVING。 在 查询子句 上下文中,您需要将子句关键字与变量一起使用。 例如,IDE 会在类似 select * from table_name $variables$; 的结构中查找 where $variables$。 如果在 WHERE 子句中有类似 a + b 的表达式,您可以像 where $variable_1$ + $variable_2$; 那样显式指定变量。 并将任意变量定义为搜索目标。

结构化搜索中的上下文

搜索目标 是一个列表,您可以在其中指定 IDE 应该搜索模板的哪一部分:单个变量或整个模板。 例如,您可以使用搜索目标借助 context = query clausewhere $a$ + $b$ 搜索模板中查找 $b$ 值。

结构化搜索中的搜索目标

作用域 定义了要执行搜索的信息来源。 它可以是打开或当前文件、 项目 工具窗口中的目录、 Alt+1 、最近更改的文件,以及其他来源。 如需在特定目录中搜索,请选择 目录 ,然后点击 浏览 按钮。

结构化搜索中的作用域

文件类型 定义了要搜索的文件方言。

选择文件方言

SQL 模板在结构化搜索中的工作方式

下面来了解搜索引擎如何处理搜索模板。 假设您在搜索字段中拥有 WHERE $a$ 搜索模板,并已设置 context = query clause

  1. GoLand 使用 查询子句 上下文模板的定义。 对于 查询子句 上下文模板,其定义为 SELECT id from dummy $pattern$。 您可以在 现有模板 菜单项下查看所有现有上下文模板。

  2. IDE 会用您在搜索模板中定义的值替换 $pattern$ 变量。 在本例中,值为 WHERE $a$。 替换结果如下所示: SELECT id from dummy WHERE $a$

  3. IDE 会解析最终的 SELECT 语句,并在语法树中搜索 WHERE $a$

  4. 找到 WHERE $a$ 后,IDE 会在编辑器中高亮显示它。

结构化搜索的算法

结构化搜索与替换

结构化搜索

  1. 点击 编辑 | 查找 | 结构化搜索(T)…

  2. 文件类型 列表中选择要用于搜索的语言。

  3. 搜索模板 字段中键入搜索模板,或选择现有模板。

    请勿选择 SQL | 通用 | 上下文 节点下的模板,这些模板由搜索引擎内部使用,用于消除语言歧义。 已保存的 SQL 模板位于 用户定义 节点下。

  4. 如果修改器面板处于隐藏状态,请点击 切换修饰符面板 按钮(切换修改器面板按钮)。

  5. 点击每个模板变量,并设置搜索修饰符。 要设置修饰符,请点击 添加修饰符 链接。

    GoLand 会立即在编辑器中高亮显示找到的代码片段。

  6. (仅限 SQL)添加 SQL 上下文。

    搜索模板 字段中,将插入点置于模板开头,然后点击 添加修饰符 链接。 从列表中选择 上下文

  7. (可选)在 作用域 列表中选择搜索位置:项目、模块、目录或自定义作用域内。

  8. (可选)在 搜索目标 列表中选择要搜索模板的哪一部分:独立变量或整个模板(完全匹配)。

  9. 点击 查找

    演示如何进行结构化搜索的动画

结构化替换

  1. 在主菜单中,转到 编辑 | 查找 | 结构化替换

  2. 搜索模板 字段中键入搜索模板,或选择现有模板。

    请勿选择 SQL | 通用 | 上下文 节点下的模板,这些模板由搜索引擎内部使用,旨在消除语言歧义。 已保存的 SQL 模板位于 用户定义 节点下。

  3. 替换模板 字段中键入搜索模板,或选择现有模板。

  4. 如果需要为替换模板中的变量添加修饰符,请将插入点置于该变量处,并使用修饰符区域进行管理。

  5. 点击 查找。 GoLand 会在 查找 工具窗口中显示结果。

  6. 查找 工具窗口中,您可以继续操作结果:逐一替换所找到的项、一次性替换全部,或预览潜在更改。

    结构化替换目标
最后修改日期: 2025年 9月 26日