Netezza格式化功能

时间:2016-01-03 16:15:29

标签: sql format number-formatting type-conversion netezza

我导入了一些有点大数据的数据,有时是奇数格式(例如,12,345.01-和1,945.001-),我正试图“修复”它。

数据导入为VARCHAR(20)

我的解决方案:

to_number(BadNumCol, 'S999G999G999D999')

input: 10426.95 ;261.000 ;33.93-

outputs:42695.00 ;261.000 ; 3.93

the output is NUMERIC(12,3)

desired output: 10426.95 ; 261.000 ; -33.93

这里发生了什么?在我的无知中,我错过了什么/不理解?

而且,我如何修复这些~4亿个数据元素?

1 个答案:

答案 0 :(得分:0)

这是我在这里看到的两个问题。

对于来自数据“解决方案”部分的样本输入数据,样本输入数据都没有组分隔符,因此您在TO_NUMBER函数中指定的组分隔符不匹配。

此外,当您的数据具有尾随减号时,您指定一个锚定在字符串开头的符号字符。

我可以从您的示例输入数据中推断出最合适的转换格式字符串:'999999999D999MI'

select * from num_test;
 BADNUMCOL
-----------
 261.000
 10426.95
 33.93-
(3 rows)

select to_number(BadNumCol,'999999999D999MI')::NUMERIC(12,3) GoodNumCol from num_test;
 GOODNUMCOL
------------
  10426.950
    -33.930
    261.000
(3 rows)