GoLand 2025.3 Help

SQL 模板

结构搜索可帮助您查找与用户定义搜索模板匹配的代码段。 如果模板与源代码的某部分匹配,相应的表达式将被高亮显示。 搜索模板本质上是由文本、变量、筛选器、作用域和上下文组成的查询。 利用这些元素,您可以优化搜索,实现更精确的结果。

搜索工具

一个 变量 是由美元符号括起来的字符序列,例如, $name$$field$

下面的屏幕截图显示了一个用于搜索结构体的模板。

未使用过滤器的变量

修饰符 是可应用于变量和搜索模板的用户定义条件。 它们允许您:

  • 检查变量出现的次数,

  • 验证变量的类型,

  • 将变量与纯文本或正则表达式进行匹配,

  • 应用 Groovy 脚本。

有关可用修饰符的完整列表,请参见 搜索模板、修饰符和脚本约束

下一个示例展示了与之前相同的模板,但将 $name$ 变量的 文本 修饰符设置为 Employee。 请注意编辑器中高亮显示的搜索结果发生了怎样的变化。

应用了文本筛选器的变量

如果我们将 type 修饰符设置为 [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年 12月 5日