了解 Snowflake 中字符串的 max() 表示形式

问题描述 投票:0回答:1

假设我在雪花表列中有两个字符串。

val
“000000001bb1304f”
“000000001bb13059”

我试图了解 MAX() 如何处理这些值。它是否将每个字符串分解为其默认编码值(假设 Snowflake 默认使用特定编码,如 utf-8 用于 STRING 数据类型)并对总字符串值求和?

在我的示例中,我收到“000000001bb13059”作为“最大字符串”值,但想了解这是如何决定的。

示例雪花sql代码:

-- direct comparison among strings
-- result is true
select '000000001bb1304f' < '000000001bb13059';

-- using MAX()
create temporary table test (val STRING);
insert into test values('000000001bb1304f');
insert into test values('000000001bb13059');

-- max val is '000000001bb13059'
select max(val) from test;
string snowflake-cloud-data-platform ascii utf
1个回答
0
投票

字符串比较通过比较每个字符的 ascii 值来工作——从左到右。你的两个字符串是相同的,直到你有'4'和'5'的倒数第二个字符,所以带有'5'的字符串更大,所以它由 MAX 值返回。

顺便说一句,这是大多数系统中字符串比较的工作方式,它并不特定于 Snowflake

© www.soinside.com 2019 - 2024. All rights reserved.