SQL 改进¶
Snowflake 不断推出增强功能,使编写查询更加容易。使用这些新关键字和函数,可以编写更简单、更短的 SELECT 语句。
2025 年的 SQL 改进¶
2025 年推出了以下 SQL 改进:
发布日期 |
改进 |
影响 |
|---|---|---|
October 2025 |
Directed joins are now generally available and are no longer in preview. You can enforce join ordering when
you run a query with the JOIN clause by adding the |
您可以更轻松地将具有联接顺序指令的工作负载迁移到 Snowflake,并可能通过按特定顺序扫描联接的表来提高性能。 |
October 2025 |
In PIVOT queries, you can use the AS clause to specify aliases for the pivot column names. In UNPIVOT queries, you can use the AS clause to specify aliases for column names that appear in the result of the UNPIVOT operation. |
The AS clause makes it easier to customize column names that appear in the output for PIVOT and UNPIVOT operations. |
October 2025 |
You can use the |
When the target table and the source have the same number of columns and the same names for these columns, you can use these subclauses to avoid maintaining column lists in the INSERT and UPDATE clauses of MERGE statements. |
September 2025 |
You can use the RESAMPLE clause and a set of interpolation functions to fill gaps in time-series data. |
This SQL functionality simplifies the process of generating continuous, uniformly-sampled time-series data. |
2025 年 8 月 |
对定向联接的支持(预览版)。当您使用 JOIN 子句运行查询时,可以通过添加 |
您可以更轻松地将具有联接顺序指令的工作负载迁移到 Snowflake,并可能通过按特定顺序扫描联接的表来提高性能。 |
2025 年 7 月 |
您可以指定 ORDER BY ALL 子句,以按照 SELECT 列表中指定的所有列进行排序。 |
您可以按 SELECT 列表中的所有列对结果进行排序,而不必使用名称指定每个列。 |
2025 年 6 月 |
您可以使用 UNION BY NAME 运算符 按名称而不是按位置组合行。 |
UNION BY NAME 运算符简化了表中具有不同位置的列子集的组合。 |
2025 年 5 月 |
您可以使用 管道运算符 ( |
管道运算符可以简化依赖 SQL 语句的执行,提高复杂 SQL 操作的可读性和灵活性。 |
2025 年 3 月 |
您可以使用 展开运算符 ( |
扩展运算符可以简化接受可变数量值的函数调用和查询。有关更多信息,请参阅 ` Snowflake 推出 SQL 扩展运算符 (**) <https://www.snowflake.cn/en/engineering-blog/sql-spread-operator/>`_ 博客文章。 |
2025 年 2 月 |
SEARCH 函数支持连接 (AND) 语义。 |
为 SEARCH_MODE 实参指定 |
2025 年 1 月 |
ARRAY_AGG 函数中支持基于行和基于范围的窗口框架。 |
用户可以将移动窗口框架中的值收集到数组,从而汇总数据子集。 |
2024 年 SQL 改进¶
2024 年推出了以下 SQL 改进:
发布日期 |
改进 |
影响 |
|---|---|---|
November 2024 |
Full-text search with the SEARCH and SEARCH_IP functions is now generally available and is no longer in preview. |
您可以在一个或多个表的指定列中查找字符数据(文本)和 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。 |
2024 年 10 月 |
支持在暂存区的文件中查询最大 128 MB 的对象。 |
在将对象存储在列中之前,可以更轻松地减小其大小。此外,9.17 版本现在支持将大于 16 MB 的对象存储在一列中。有关更多信息,请参阅 数据库对象的大小限制。 |
2024 年 10 月 |
您可以使用 lambda 表达式来减少半结构化和结构化数据,从而提供一种简洁、可读性强且高效的方式来执行数据操作和高级分析。 |
|
2024 年 9 月 |
支持 从返回表格数据的存储程序中选择。 |
您可以简化将结果保存到表的 SQL 语句。例如,与其使用 SQLID Snowflake Scripting 变量和 RESULT_SCAN 函数来创建一个包含查询结果的表,不如使用一个直接从结果中进行选择的查询。 |
2024 年 9 月 |
Support extended for RANGE BETWEEN window frames with explicit offsets (n PRECEDING and n FOLLOWING) to include the FIRST_VALUE and LAST_VALUE window functions. |
当时间序列数据集中出现预期或意外的缺失记录导致间隙时,您可以使用附加函数来运行移动聚合。 |
2024 年 8 月 |
RANGE BETWEEN window frames with explicit offsets (n PRECEDING and n FOLLOWING) are now generally available and are no longer in preview. |
当时间序列数据集中出现预期或意外的缺失记录导致间隙时,您可以更轻松地运行移动聚合。 |
2024 年 8 月 |
您可以在一个或多个表的指定列中查找字符数据(文本)和 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。 |
|
2024 年 8 月 |
支持在 函数调用 和 对象常量 中使用 ILIKE 和 EXCLUDE 关键字在 SELECT 列表或 GROUP BY 子句中进行筛选。 |
在函数调用和对象常量中,可以筛选与模式匹配的列,也可以排除特定列。 |
2024 年 7 月 |
支持在 OBJECT 常量 中指定通配符,以便在 SELECT 列表或 GROUP BY 子句中进行筛选。 |
您可以使用属性名作为键,相关值作为值,从指定数据中构建一个 OBJECT 值。 |
2024 年 6 月 |
预览版支持 RANGE BETWEEN 显式偏移窗口框架 <label-window_syntax_and_usage>`(n PRECEDING 和 n FOLLOWING),用于以下窗口函数::doc:/sql-reference/functions/avg`、COUNT、MIN、MAX 和 SUM。 |
当时间序列数据集中出现预期或意外的缺失记录导致间隙时,您可以更轻松地运行移动聚合。 |
2024 年 5 月 |
支持在 UNPIVOT 分子句中使用 |
在 SQL 语句中使用 UNPIVOT 分子句时,灵活性更大。 |
2024 年 5 月 |
支持使用 TABLE 关键字 获取对表、视图、安全视图或查询的引用,并 在 FROM 子句中调用类中的方法。 |
您可以使用 TABLE 关键字编写更简单的 SQL 语句。 |
2024 年 5 月 |
新 ASOF JOIN 构造。 |
您可以编写更简单的 SQL 语句来连接包含 时间序列数据的表。 |
2024 年 5 月 |
支持使用 PIVOT 构造指定 ANY 关键字或子查询。 |
您可以轻松地对所有不同值或子查询返回的所有值执行透视。 |
2024 年 5 月 |
您可以使用 Lambda 表达式来筛选和转换半结构化和结构化数据,从而提供一种简洁、可读性强且高效的方式来执行数据操作和高级分析。 |
|
2024 年 3 月 |
可以从表达式列表中返回最低或最高的非 NULL 值。 |
|
2024 年 3 月 |
支持 SELECT 列表中的尾随逗号。 |
您可以删除或移动 SELECT 列表中的最后一列,而无需删除前面的逗号。 |
2024 年 2 月 |
可以将使用 |
2023 年 SQL 改进¶
2023 年推出了以下 SQL 改进:
发布日期 |
改进 |
影响 |
|---|---|---|
2023 年 8 月 |
新 ARRAY_MIN、ARRAY_MAX 和 ARRAY_SORT 函数。 |
现在可以轻松选择数组中的最小值和最大值元素。 您可以轻松获取排序后的元素数组。 |
2023 年 8 月 |
SELECT 命令中的新 ILIKE 和 REPLACE 参数。 |
现在,您可以选择与包含 SQL 通配符的模式匹配的所有列。 选择所有列时,可以用表达式替换特定列的值。 |
2023 年 7 月 |
GROUP BY 构造中的新 ALL 关键字。 |
您可以按 SELECT 列表中所有非汇总列对结果进行分组,而无需指定每一列的名称。 |
2023 年 2 月 |
支持在 ROUND 函数中使用银行家舍入法(奇进偶舍 (link removed))。 |
现在可以在四舍五入数值时使用银行家舍入法。 |
2023 年 1 月 |
您可以在列中找到包含最小值或最大值的行,然后从其他列中检索值。 |
2022 年 SQL 改进¶
2022 年推出了以下 SQL 改进:
发布日期 |
改进 |
影响 |
|---|---|---|
2022 年 11 月 |
SELECT 命令中的新 EXCLUDE 和 RENAME 参数。 |
现在,您可以选择所有列,并指定要排除或重命名特定列。 |
2022 年 11 月 |
新 ARRAY_EXCEPT 和 ARRAY_DISTINCT 函数。 |
现在可以轻松选择仅存在于一个数组中但不在另一个数组中的元素。 您可以轻松获取数组中的不同元素。 |
2022 年 5 月 |
新 REGEXP_SUBSTR_ALL 函数。 |
现在,您可以轻松从字符串中提取与正则表达式匹配的子字符串。 |