雪花-VALUES子句中的操作-表达式无效 [英] Snowflake - Operation in VALUES clause - Invalid expression

查看:12
本文介绍了雪花-VALUES子句中的操作-表达式无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

SELECT * FROM ( 
   VALUES (1/3.0), (2)
) AS  t ;

退货:

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

推荐答案

这非常特殊,可能会被定性为错误。
任何结果为整数的除法都有效,但分数会触发错误消息。

Documentation说明:
每个表达式必须是常量或表达式,在编译SQL语句期间可以将其计算为常量大多数简单算术表达式和字符串函数可以在编译时计算,但大多数其他表达式不能。

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

SELECT * FROM (VALUES (0.33333333333333333), (2)) AS T(VAL);
转念一想,这并不像看起来那么直截了当。如果在CREATE TABLE AS SELECT语句中使用这些值,数据类型应该是NUMBER(7,6)FLOAT还是其他值?也许在这些情况下最好是具体一点。

Scale and Precision in Arithmetic Operations中记录了分区等的具体信息。

这篇关于雪花-VALUES子句中的操作-表达式无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆