Snowflake cloud data platform 雪花-值子句中的操作-表达式无效

Snowflake cloud data platform 雪花-值子句中的操作-表达式无效,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,如何在Snowflake中的VALUES子句中获得有理数 从( 数值(1/3.0),(2) )AS-t; 返回: SQL编译错误:VALUES子句中的表达式[1/3]无效 这太奇怪了,可以说是一个bug。 任何导致整数的除法都有效,但分数会触发错误消息 国家规定: 每个表达式都必须是常量,或者在编译SQL语句期间可以作为常量计算的表达式。 大多数简单的算术表达式和字符串函数可以在编译时计算,但大多数其他表达式不能 显然,(1/3)应该是这样一个简单的算术表达式。简单的解决方法当然是计算答案,并

如何在Snowflake中的VALUES子句中获得有理数

从(
数值(1/3.0),(2)
)AS-t;
返回:

SQL编译错误:VALUES子句中的表达式[1/3]无效


这太奇怪了,可以说是一个bug。
任何导致整数的除法都有效,但分数会触发错误消息

国家规定:
每个表达式都必须是常量,或者在编译SQL语句期间可以作为常量计算的表达式。 大多数简单的算术表达式和字符串函数可以在编译时计算,但大多数其他表达式不能

显然,
(1/3)
应该是这样一个简单的算术表达式。简单的解决方法当然是计算答案,并将其包含为十进制数:

SELECT * FROM (VALUES (0.33333333333333333), (2)) AS T(VAL);
仔细想想,这并不像看上去那么直截了当。如果这些值在
创建表中用作SELECT
语句,那么数据类型应该是
NUMBER(7,6)
还是
FLOAT
或其他类型?也许在这些情况下最好是具体的


除法等的具体细节记录在中。

如果你知道你有大量你想要的rational输入,你可以在选择中进行计算

SELECT column1/column2 FROM VALUES (1,3),(2,1);
给予:

COLUMN1/COLUMN2
0.333333
2.000000

还有其他类似的领域也会发生同样的事情,比如将变量设置为值。我建议查看Snowflake社区()的创意页面,搜索/升级投票或创建新创意。我不会把它归类为一个bug,但它肯定应该更加健壮。