雪花-VALUES子句中的操作-表达式无效 [英] Snowflake - Operation in VALUES clause - Invalid expression
本文介绍了雪花-VALUES子句中的操作-表达式无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在Snowflake中的VALUES子句中获得有理数?
SELECT * FROM (
VALUES (1/3.0), (2)
) AS t ;
退货:
SQL编译错误:VALUES子句中的表达式[1/3]无效
推荐答案
这非常特殊,可能会被定性为错误。
任何结果为整数的除法都有效,但分数会触发错误消息。
每个表达式必须是常量或表达式,在编译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屋!
查看全文