我需要将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种值是否有问题?
托马斯
答案 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;
因此,在>更改
之前,将列更新为nullupdate test
set pression = null
where pression = '';
然后改变它
ALTER TABLE test
ALTER COLUMN pression TYPE NUMERIC USING to_number(pression, '99.9') ;