PostgreSQL:to_number()函数

时间:2014-06-19 12:52:25

标签: postgresql casting

我需要将CHARACTER VARYING列转换为NUMERIC类型。源列包含如下值:9.9; 99.9;空值。我使用以下SQL指令:

ALTER TABLE test ALTER COLUMN pression TYPE NUMERIC USING to_number(pression, '99.9') ;

我收到错误:“数字类型的输入语法无效:”“»(SQL:22P02)......

同时拥有9.9和99.9种值是否有问题?

托马斯

1 个答案:

答案 0 :(得分:0)

可以将null转换为numeric

select null::numeric;
 numeric 
---------

(1 row)

select to_number(null, '99.9');
 to_number 
-----------

(1 row)

但不是空字符串:

select ''::numeric;
ERROR:  invalid input syntax for type numeric: ""
LINE 1: select ''::numeric;

因此,在更改

之前,将列更新为null
update test
set pression = null
where pression = '';

然后改变它

ALTER TABLE test 
ALTER COLUMN pression TYPE NUMERIC USING to_number(pression, '99.9') ;