DaM*_*ill 3 snowflake-cloud-data-platform
我们如何在 Snowflake 的 VALUES 子句中获得有理数?
SELECT * FROM (
VALUES (1/3.0), (2)
) AS t ;
Run Code Online (Sandbox Code Playgroud)
返回:
SQL 编译错误:VALUES 子句中的表达式 [1 / 3] 无效
这是非常奇特的,可以被定性为一个错误。
任何产生整数的除法都有效,但分数会触发错误消息。
文档指出:每个表达式
必须是常量,或者是在 SQL 语句编译期间
可以被计算为常量的表达式。大多数简单的算术表达式和字符串函数可以在编译时计算,但大多数其他表达式不能。
显然(1/3)应该是这么简单的算术表达式。简单的解决方法当然是计算答案并包含为十进制数:
SELECT * FROM (VALUES (0.33333333333333333), (2)) AS T(VAL);
Run Code Online (Sandbox Code Playgroud)
转念一想,这并不像看起来那么简单。如果在语句中使用这些值CREATE TABLE AS SELECT,数据类型应该是NUMBER(7,6)或FLOAT或其他?也许最好在这些情况下具体说明。
除法等的具体细节记录在算术运算中的比例和精度中。
| 归档时间: |
|
| 查看次数: |
4245 次 |
| 最近记录: |