Snowflake cloud data platform 如何在snowflake中实现数字(Oralce)数据类型功能?

Snowflake cloud data platform 如何在snowflake中实现数字(Oralce)数据类型功能?,snowflake-cloud-data-platform,sqldatatypes,Snowflake Cloud Data Platform,Sqldatatypes,我有一个oracle表列值,如4.138 153.2809 128.113141081389正在尝试将这些值加载到带有表DDL编号(38,16)的snowflake中。因此,雪花表中的值现在变为4.138000000000 153.2809000000000000 128.113141081389000,但我需要将oracle中的值加载到snowflake,后面不带0。 如何实现这一点?一般来说,如果你想存储数据而不带尾随的零,你应该按比例剪切。一个数字(38,3)将存储4.138,仅此而已 如

我有一个oracle表列值,如4.138 153.2809 128.113141081389正在尝试将这些值加载到带有表DDL编号(38,16)的snowflake中。因此,雪花表中的值现在变为4.138000000000 153.2809000000000000 128.113141081389000,但我需要将oracle中的值加载到snowflake,后面不带0。
如何实现这一点?

一般来说,如果你想存储数据而不带尾随的零,你应该按比例剪切。一个数字(38,3)将存储4.138,仅此而已


如果是为了显示,则只需根据

更改格式化字符串,以格式化固定位置的数字类型,使其不显示尾随的零:

create or replace table TEST_NUMBERS (N number(38,16));
insert into TEST_NUMBERS(N) values (4.138), (153.2809), (128.113141081389);

select to_varchar(N, 'FMTM') as COMPACT_NUMBER from TEST_NUMBERS;

-- The "FM" toggles the "Fill Mode" to compact from the default, which is full.
-- The "TM" specifies using "Text Minimal".
-- It requires both Fill Mode of compact and Text Minimal set to suppress trailing
-- zeros on fixed-position numbers.
当然,这仅用于显示和输出。如果您想了解规模和精度如何影响存储和计算,文档的这一部分中有一个注释:


您确定这是存储问题而不仅仅是显示问题吗?您可能可以在显示时格式化它们。您的意思是说这是显示问题。您是否有要在列级别设置格式以显示给用户的教程?这是一个存储问题。我试图从snowflake中提取数据,但其中有尾随0。4.138000000000153.280900000000000如何提取?我不知道Snowflake,但我说“通常,整数部分的前导零和小数部分的尾随零被替换为空格”,所以这必须是可能的,并且应该是默认值。但我的要求是小数位数会随记录的不同而变化,例如:153.2809。所以我定义了数字(38,16)。所以雪花数字数据类型不会像Oracle数字数据类型那样工作?它的工作原理完全相同。Oracle也以同样的规模保存它,这只是一个显示问题。如果你解释一下你的用例到底是什么,我们可能会提供更好的帮助。小数部分有保留位的零。可以强制转换为浮点以消除零。您可以强制转换为文本,以绕过您的工具可能正在应用的格式设置。例如,
选择1.23456789::number(38,16)::float::text,1.23456789::number(38,16)::text我不会那样做。。。。由于缺乏精度,强制转换为浮点实际上可以更改值。