postgresql - Alter Column TYPE USING - 不能从 varchar 更改为 numeric
问题描述
如果有人可以帮助我一点,我将不胜感激。我对 Postrgresql 10 完全陌生,我有一个大文件,有数百万行 73 列,我无法导入,所以我将所有列设置为 varchar。现在我需要操作无法更改数据类型的数据。我试了几个小时。该列包含一些带有 1 位或 2 位小数的值。这就是我正在做的事情:
ALTER TABLE table1
ALTER COLUMN facevalue TYPE numeric USING (facevalue::numeric);
这是我得到的错误
ERROR: invalid input syntax for type numeric: " "
SQL state: 22P02
感谢您的时间和考虑
解决方案
你显然有空字符串或只有空格的值。您需要将它们转换为 NULL
ALTER TABLE table1
ALTER COLUMN facevalue TYPE numeric USING (nullif(trim(facevalue),'')::numeric);
推荐阅读
- php - (Laravel,php),将视频文件转换为网络优化的视频格式(webm?),而不使用流媒体平台
- hashicorp-vault - Vault:云和本地实例之间的数据同步?
- javascript - 在反应应用程序中使用 d3 条形图调用动态响应
- javascript - 是否可以禁止从不同域获取资源?
- jquery - jQuery tablesorter - 每列两个排序选项
- ubuntu - 无法在 Pop_Os 上移动 GitKraken 窗口(20.10)
- swift - 从字符串中删除字符 [Swift]
- assembly - 你有一个 64 位的数字 0xCCCCCCCCAAAAAAAAA。编写一个汇编程序来实现 64 位逻辑右移。将此 64 位数字右移 4
- java - 在java中,为什么我只能导入抽象类?
- reactjs - 使用 /build 作为 React 应用程序的 GitHub 页面的源