GoLand 2025.1 Help

SQL 模板

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

搜索工具

变量 是一组用美元符号括起来的字符(例如, $tag$$anyCharactersYouWant$)。 没有过滤器和上下文的变量等同于一个完整的语句。

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

如果我们应用 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 应该搜索模板的哪一部分:单个变量或整个模板。 例如,您可以使用搜索目标从 where $a$ + $b$ 搜索模板中查找 $b$ 值,使用 context = query clause

结构化搜索中的搜索目标

作用域 定义了您希望执行搜索的信息来源。 它可以是打开的或当前的文件、 项目 工具窗口中的目录 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年 6月 30日