min(数字字符串)如何在雪花中工作

问题描述 投票:0回答:2
select min(val) from (select '10026096' as val union select '1002793' as val);

上面的sql查询返回以下输出:

MIN(VAL)
10026096

请帮助我理解为什么 snowflake 在两者中给出更大的数字作为输出。它如何在 min 函数中处理数字字符串。

snowflake-cloud-data-platform aggregate-functions
2个回答
0
投票

使用正确的数据类型保存数据是关键,INT != STRING。

1 0 0 2 6 0 9 6
= = = = <
1 0 0 2 7 9 3

因此字符串

10026096
低于
1002793
.


SELECT '10026096' < '1002793'
     , 10026096 < 1002793;

输出:

'10026096'< '1002793' 10026096 < 1002793
真实

0
投票

在您的情况下,这是因为您的“数字”值在引号中,因此它们作为字符串工作并按字母顺序进行比较。

您可以使用“订单”来验证:

select * from (select '10026096' as val union select '1002793' as val) order by val;

如果你想进行数值比较,你应该使用数字而不是字符串:

select min(val) from (select 10026096 as val union select 1002793 as val);
© www.soinside.com 2019 - 2024. All rights reserved.