新 SQL 函数:GREATEST_IGNORE_NULLS 和 LEAST_IGNORE_NULLS 可能与命名类似的 UDFs 冲突¶
Snowflake 引入了两个新的内置函数:
GREATEST_IGNORE_NULLS:返回表达式列表中最大的非 NULL 值。如果所有实参值为 NULLs,则结果为 NULL。
GREATEST_IGNORE_NULLS 支持所有数据类型的实参,包括 VARIANT。
LEAST_IGNORE_NULLS:返回表达式列表中最小的非 NULL 值。如果所有实参值为 NULLs,则结果为 NULL。
LEAST_IGNORE_NULLS 支持所有数据类型的实参,包括 VARIANT。
如果具有名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的用户定义函数 (UDF),则调用函数会产生以下影响:
- 变更前:
调用名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的 UDF 将解析到 UDF。
- 变更后:
调用名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的 UDF 将解析为新的内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数。内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数的运行方式可能与 UDF 不同。
如果记录的新内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数的语义与 UDF 的语义不匹配,则可以执行以下操作之一:
重命名 UDF (使用 ALTER FUNCTION ...RENAME TO ...),并将对原始 UDF 名称的所有引用替换为新名称。
指定包含 UDF 的数据库和架构名以 完全限定 对 UDF 的所有引用。例如:
SELECT my_database.my_schema.greatest_ignore_nulls(...); SELECT my_database.my_schema.least_ignore_nulls(...);
参考:1354