如何删除雪花中的尾随零?

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

我有一个 INT 类型的列。我想删除所有尾随零,只保留数字。下面的示例应遵循:3,10,20,20。我不能在末尾有 4 个零。

有办法做到这一点吗?

enter image description here

sql snowflake-cloud-data-platform snowflake-schema
4个回答
1
投票

您可以尝试将数字数据转换为整数,例如

SELECT AS_INTEGER(col) AS col
FROM yourTable;

1
投票

您可以使用以下

TRUNCATE
RTRIM
功能

TRUNCATE(Fieldname)
RTRIM(Fieldname,'.0')

0
投票

3dp 是浮点数的打印方式,因此您可以 转换为数字

SELECT column_name::number FROM table

如果您的数据是字符串/变量类型,并且并非存储在列中的所有值总是干净地转换,则在 Snowflake 中您可能会遇到错误,使用

TO_NUMBER
::number
形式,因此应使用
[TRY_TO_NUMBER][2]
形式。


0
投票

老问题,但我想有些人仍然会在这里并犯我犯过的同样的错误。小心 RTRIM(Fieldname,'.0')。它还删除了末尾的零,而不仅仅是尾随零!如果您不想实现这一目标,一些选择是: trunc(值),round(值,0)。 如果你想真正理解请看例子。

select cast('1020.0' as varchar) as test_string, 
trunc(to_varchar(test_string)) as remove_trailing_opt_1,
round(test_string,0)  as remove_trailing_opt_2,
rtrim(test_string, '0.') as remove_all_end_zeros /* same as TRIM(test_string,'.0')
--- check that functions also work with decimal 
,cast('1020.0' as decimal(10,2)) as test_decimal, 
trunc(to_varchar(test_decimal)),
 round(test_decimal,0),
 rtrim(test_decimal, '0.') */ 
© www.soinside.com 2019 - 2024. All rights reserved.