Netezza 格式化函数

Netezza Formatting Functions

我已经导入了一些数据,有时是奇数格式(例如 12,345.01- 和 1,945.001-),我正在尝试 'fix' 它。

数据导入为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

这是怎么回事?我missing/not在无知中了解什么?

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

我在这里看到了两个问题。

对于来自数据 "solution" 部分的示例输入数据,示例输入数据的 none 具有组分隔符,因此您在 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)