DOCUMENTATION
/
语言
English
中文
开始使用
指南
开发者
参考
版本说明
教程
状态
前往 https://china-status.snowflake.com 查看状态详细信息
  1. 概述
    • Snowflake Horizon 目录
      • 连接到 Snowflake 的应用程序和工具
      • 虚拟仓库
      • 数据库、表和视图
      • Data types
        • 数据集成
          1. Snowflake Openflow
          2. Apache Iceberg™
            1. Apache Iceberg™ 表
            2. Snowflake Open Catalog
        • Data engineering
          1. 数据加载
          2. 动态表
          3. Streams and tasks
          4. Row timestamps
            • dbt Projects on Snowflake
            • 数据卸载
          5. Storage lifecycle policies
          6. Migrations
          7. 查询
              1. 联接
              2. 子查询
                • 查询分层数据
                  • 公用表表达式 (CTE)
                    • 查询半结构化数据
                      • 使用全文搜索
                        • 运行时构造 SQL
                          • 分析时间序列数据
                            • 使用窗口函数分析数据
                              • 匹配识别
                                • 序列
                                  • 持久化查询结果
                                    • 非重复计数
                                    • 相似性估算
                                      • 频率估算
                                        • 估算百分位值
                                          • 使用 Query History 监控查询活动
                                            • Using query insights to improve performance
                                              • 查询哈希
                                                • Top-K 修剪
                                                  • 取消语句
                                                • 列表
                                                • Collaboration
                                                • Snowflake AI 和 ML
                                                • Snowflake Postgres
                                                • 警报和通知
                                                • 安全
                                                • 数据治理
                                                • 隐私
                                                • 组织和账户
                                                • 业务连续性和数据恢复
                                                • Performance optimization
                                                • 成本和计费
                                                指南查询使用全文搜索

                                                使用全文搜索¶

                                                您可以使用搜索功能在一个或多个表的指定列中查找字符数据(文本)和 IP 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。此功能根据给定的搜索词列表在指定的列或字符串中搜索文本。如果文本与基于搜索语义的指定搜索词匹配,则函数返回 TRUE。

                                                在大多数情况下,调用 SEARCH 函数的方法是在 SELECT 语句的 SELECT 列表或 WHERE 子句中指定该函数。如果该函数作为 WHERE 子句过滤器使用,当函数返回 TRUE 时,查询将返回行。

                                                SEARCH 功能无需设置,也不需要额外权限。如果您使用的角色具有访问列中数据的权限,您可以通过使用 SEARCH 函数来搜索该数据。

                                                接下来的部分包含有关 SEARCH 函数的更多信息,以及在使用它时优化查询性能的相关内容:

                                                • 使用 SEARCH 函数

                                                • 使用 SEARCH_IP 函数

                                                • 优化使用 SEARCH 函数的查询

                                                使用 SEARCH 函数¶

                                                SEARCH 函数 在一个或多个表中查找指定列中的字符数据(文本),包括 VARIANT、OBJECT 和 ARRAY 列中的字段。

                                                当您使用 SEARCH 函数时,文本分析器将文本分解为 词元,这些是文本的离散单位,例如单词或数字。如果您不指定分析器,则会应用默认分析器。分析器从搜索词和数据中提取标记。

                                                如果从搜索项中提取的令牌与根据搜索语义从指定列或字段中提取的令牌匹配,则函数返回 TRUE。SEARCH_MODE 函数实参可用于指定以下搜索模式的其中之一:

                                                • 'OR' – 该函数使用的是析取的语义。如果从被搜索的列或字段中提取的 任何 词元与从搜索字符串中提取的 任何 词元相匹配,则表示存在匹配。例如,如果 search_string 值为 'blue red green',则对于被搜索的任何列或字段中包含 blue OR red OR green 的行,函数返回 TRUE。

                                                • 'AND' – 该函数使用的是合取的语义。如果从 至少一个 被搜索列或字段中提取的词元与从搜索字符串中提取的 所有 词元相匹配,则会出现匹配。匹配的词元必须都在一列或一个字段中;不能分散在多列或多个字段中。例如,如果 search_string 值为 'blue red green',则对于在至少一个被搜索的列或字段中包含 blue AND red AND green 的行,函数返回 TRUE。

                                                • 'PHRASE' – 该函数使用的是短语匹配语义。如果从 至少一个 被搜索列或字段中提取的词元与从搜索字符串中提取的 所有 词元相匹配(包括词元的顺序和相邻关系),则认为匹配成功。

                                                  匹配语义与合取语义相同,但以下差异除外:

                                                  • 词元的顺序必须完全匹配。例如,如果 search_string 值为 'blue,red,green',则对于 red,green,blue,函数返回 FALSE。

                                                  • 搜索数据中不得插入其他词元。例如,如果 search_string 值为 'blue,red,green',则对于 blue,yellow,red,green,函数返回 FALSE。

                                                • 'EXACT' – 该函数使用的是完全匹配语义。如果从 至少一个 被搜索列或字段中提取的词元与从搜索字符串(包括分隔符)中提取的 所有 词元相匹配,则认为匹配成功。

                                                  匹配语义与短语搜索语义相同,但以下差异除外:

                                                  • 词元之间的分隔符字符串必须完全匹配。例如,如果 search_string 值为 'blue,red,green',则对于在至少一个被搜索的列或字段中包含 blue,red,green 的行,函数返回 TRUE。对于变体(例如 blue|red| green 或 blue, red, green),函数返回 FALSE。

                                                  • 当分隔符是 search_string 值中的第一个或最后一个字符时,分隔符会被视为匹配字符。因此,第一个和最后一个分隔符左侧和右侧的分隔符也可能导致匹配。例如,如果 search_string 值为 '[blue]',对于 foo [blue] bar、[[blue]]`和 :code:`=[blue].,函数返回 TRUE,但不适用于 (blue) 或 foo blue bar。

                                                以下示例使用默认 SEARCH_MODE ('OR') 和默认分析器在文本 leopard 中搜索字符串 snow leopard:

                                                SELECT SEARCH('leopard', 'snow leopard');
                                                
                                                Copy
                                                +-----------------------------------+
                                                | SEARCH('LEOPARD', 'SNOW LEOPARD') |
                                                |-----------------------------------|
                                                | True                              |
                                                +-----------------------------------+
                                                

                                                以下示例在文本 lion 中搜索字符串 snow leopard:

                                                SELECT SEARCH('lion', 'snow leopard');
                                                
                                                Copy
                                                +--------------------------------+
                                                | SEARCH('LION', 'SNOW LEOPARD') |
                                                |--------------------------------|
                                                | False                          |
                                                +--------------------------------+
                                                

                                                以下示例在文本 leopard 中搜索字符串 snow leopard,并指定 SEARCH_MODE 参数为 'AND':

                                                SELECT SEARCH('leopard', 'snow leopard', search_mode => 'AND');
                                                
                                                Copy
                                                +---------------------------------------------------------+
                                                | SEARCH('LEOPARD', 'SNOW LEOPARD', SEARCH_MODE => 'AND') |
                                                |---------------------------------------------------------|
                                                | False                                                   |
                                                +---------------------------------------------------------+
                                                

                                                有关此功能和其他示例的更多信息,请参阅 SEARCH。

                                                使用 SEARCH_IP 函数¶

                                                SEARCH_IP 函数 在一个或多个表中查找指定字符-字符串列中的有效 IPv4 和 IPv6 地址,包括 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');
                                                
                                                Copy
                                                +---------------------------------------+
                                                | SEARCH_IP('192.0.2.146','10.10.10.1') |
                                                |---------------------------------------|
                                                | False                                 |
                                                +---------------------------------------+
                                                

                                                有关此功能和其他示例的更多信息,请参阅 SEARCH_IP。

                                                优化使用 SEARCH 函数的查询¶

                                                为了提高该使用该函数的查询性能,您可以在表中的特定列或列集上选择性地 启用 FULL_TEXT 搜索优化。当您启用搜索优化时,将建立并维护一个新的 搜索访问路径。

                                                此页面是否有帮助?

                                                访问 Snowflake
                                                分享您的反馈
                                                隐私策略服务条款
                                                © 2026 Snowflake 保留所有权利.@北京神州数码云计算有限公司版权所有.
                                                1. 使用 SEARCH 函数
                                                2. 使用 SEARCH_IP 函数
                                                3. 优化使用 SEARCH 函数的查询
                                                1. SEARCH 函数
                                                2. SEARCH_IP 函数
                                                3. 搜索优化服务