Как добиться функциональности типа данных NUMBER (Oralce) в снежинке? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть oracle значения столбца таблицы, такие как 4.138 153.2809 128.113141081389, пытающиеся загрузить эти значения в снежинку с помощью таблицы DDL NUMBER (38,16). Таким образом, значения теперь в таблице снежинок становятся 4.1380000000000000 153.2809000000000000 128.1131410813890000, но мне нужно загрузить значения как таковые в oracle в снежинку без трейлинга 0. Как этого добиться?

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Чтобы отформатировать тип чисел с фиксированной позицией c, чтобы он не отображал конечные нули:

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.

Это, конечно, только для отображения и вывода. Если вы хотите увидеть, как масштаб и точность влияют на хранение и вычисления, в этом разделе документов есть примечание:

* 1007 размер

0 голосов
/ 06 марта 2020

Ну, как правило, если вы хотите хранить данные без конечных нулей, вы должны просто сократить масштаб. NUMBER (38,3) будет хранить 4.138 и не более того.

, и если это для целей отображения, просто измените строку форматирования в соответствии с https://docs.snowflake.net/manuals/sql-reference/sql-format-models.html#fixed -position-Numberri c - форматов

...