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

作用域 定义了要执行搜索的信息来源。 它可以是打开或当前文件、 项目 工具窗口中的目录、 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 会在 查找 工具窗口中显示结果。
在 查找 工具窗口中,您可以继续操作结果:逐一替换所找到的项、一次性替换全部,或预览潜在更改。
