我正在尝试运行此查询来更改我的纬度坐标,该坐标以文本形式保存为双精度
ALTER TABLE mapdata ALTER COLUMN lat TYPE double precision USING (lat::double precision);
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到此错误: invalid input syntax for type double precision: ""
我的假设是有一个空白条目并且 postgres 不知道将它视为双精度。我如何将其确定为 aNULL或者是否有另一种方法可以将我的lat专栏变成 a double precision?谢谢!
您有两个选择:
第一个将是一个简单的
UPDATE table SET col=NULL where col='';
Run Code Online (Sandbox Code Playgroud)
但这自然需要时间并且有点不必要,因为之后您要更改类型。
第二种方法是在转换时处理空字符串
ALTER TABLE mapdata
ALTER COLUMN lat TYPE double precision
USING (NULLIF(lat, '')::double precision);
Run Code Online (Sandbox Code Playgroud)
在NULLIF将返回NULL如果LAT栏为空字符串,否则它会返回纬度列的值。这将比首先更改源数据更有效。
| 归档时间: |
|
| 查看次数: |
7162 次 |
| 最近记录: |