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$。查询子句 :查询子句,例如
DISTINCT、FROM、WHERE、ORDER BY、GROUP BY或HAVING。 在 查询子句 上下文中,您需要使用带有变量的子句关键字。 例如,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。
GoLand 获取 查询子句 上下文模板的定义。 对于 查询子句 上下文模板,其定义为
SELECT id from dummy $pattern$。 您可以在 现有模板 菜单项下查看所有现有的上下文模板。IDE 将
$pattern$变量替换为您在搜索模板中定义的值。 在本例中,它是WHERE $a$。 替换结果将显示为:SELECT id from dummy WHERE $a$。IDE 解析最终的
SELECT语句,并在语法树中搜索WHERE $a$。当找到
WHERE $a$时,IDE 会在编辑器中高亮显示它。
结构化搜索和替换
结构化搜索
点击 。
从 文件类型 列表中,选择您希望在搜索中使用的语言。
在 搜索模板 字段中,输入搜索模板或选择现有模板。
不要选择 节点下的模板,这些模板由搜索引擎内部使用以消除语言歧义。 保存的 SQL 模板位于 节点下。
如果修改器面板被隐藏,请点击 切换修饰符面板 按钮(
)。
点击每个模板变量并设置搜索修改器。 要设置修改器,请点击 添加修饰符 链接。
GoLand 会在编辑器中即时突出显示所找到的代码。
(仅限 SQL)添加 SQL 上下文。
在 搜索模板 字段中,将光标放在模板的开头并点击 添加修饰符 链接。 从列表中选择 上下文。
(可选)从 作用域 列表中选择您希望搜索的位置:项目、模块、目录或自定义范围内。
(可选)从 搜索目标 列表中选择您希望搜索模板的哪一部分:单独的变量或整个模板(完全匹配)。
点击 查找。

结构化替换
在主菜单中,进入 .
在 搜索模板 字段中,输入搜索模板或选择现有模板。
不要选择 节点下的模板,这些模板由搜索引擎内部使用以消除语言歧义。 保存的 SQL 模板位于 节点下。
在 替换模板 字段中,输入搜索模板或选择现有模板。
如果需要为替换模板中的变量添加修改器,请将光标放在变量上,并使用修改器区域管理修改器。
点击 查找。 GoLand 在 查找 工具窗口中显示结果。
在 查找 工具窗口中,您可以进一步处理结果,逐一替换找到的项目、一次性替换所有项目,或预览您的潜在更改。
