使用全文搜索¶
您可以使用搜索功能在一个或多个表的指定列中查找字符数据(文本)和 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。此功能根据给定的搜索词列表在指定的列或字符串中搜索文本。如果文本匹配任何指定的搜索词,则该函数返回 TRUE。
在大多数情况下,调用 SEARCH 函数的方法是在 SELECT 语句的 SELECT 列表或 WHERE 子句中指定该函数。如果该函数作为 WHERE 子句过滤器使用,当函数返回 TRUE 时,查询将返回行。
SEARCH 功能无需设置,也不需要额外权限。如果您使用的角色具有访问列中数据的权限,您可以通过使用 SEARCH 函数来搜索该数据。
接下来的部分包含有关 SEARCH 函数的更多信息,以及在使用它时优化查询性能的相关内容:
使用 SEARCH 函数¶
SEARCH 函数 在一个或多个表中查找指定列中的字符数据(文本),包括 VARIANT、OBJECT 和 ARRAY 列中的字段。
当您使用 SEARCH 函数时,文本分析器将文本分解为 标记,这些是文本的离散单位,例如单词或数字。如果您不指定分析器,则会应用默认分析器。分析器从搜索词和数据中提取标记。如果从搜索词中提取的任何标记与从任何指定列或字段中提取的任何标记完全匹配,则该函数返回 TRUE。
以下示例在文本 snow leopard
中搜索字符串 LEOPARD
:
SELECT SEARCH('snow leopard','LEOPARD');
+----------------------------------+
| SEARCH('SNOW LEOPARD','LEOPARD') |
|----------------------------------|
| True |
+----------------------------------+
以下示例在文本 snow leopard
中搜索字符串 LION
:
SELECT SEARCH('snow leopard','LION');
+-------------------------------+
| SEARCH('SNOW LEOPARD','LION') |
|-------------------------------|
| False |
+-------------------------------+
搜索词列表是一个 OR 列表,因此任何在任何列出术语上的匹配都会返回 TRUE。如果您需要不同的搜索逻辑,可以修改查询。例如,您可以在具有 AND 条件的查询中多次调用 SEARCH 函数。
有关此功能和其他示例的更多信息,请参阅 SEARCH。
使用 SEARCH_IP 函数¶
SEARCH_IP 函数 在一个或多个表中查找指定字符-字符串列中的有效 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。搜索基于您指定的单个 IP 地址。如果此 IP 地址完全匹配指定列或字段中的 IP 地址,函数将返回 TRUE。
以下示例在文本 192.0.2.146
中搜索 IP 地址 10.10.10.1
:
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
有关此功能和其他示例的更多信息,请参阅 SEARCH_IP。
优化使用 SEARCH 函数的查询¶
为了提高该使用该函数的查询性能,您可以在表中的特定列或列集上选择性地 启用 FULL_TEXT 搜索优化。当您启用搜索优化时,将建立并维护一个新的 搜索访问路径。