我有一个表格,其中包含从气象观测中收集的数据。数据准备不充分,因此在插入数据库时出错。在最近的一次浏览中,我发现了不应该存在的非数字数据。
如何选择存在非数值的行?
表的布局如下:
#\d data.tempe
Table "data.tempe"
Column | Type | Modifiers
------------+-----------------------+-----------
id-station | integer |
year | integer |
t1 | character varying(25) |
t2 | character varying(25) |
t3 | character varying(25) |
t4 | character varying(25) |
t5 | character varying(25) |
t6 | character varying(25) |
t7 | character varying(25) |
t8 | character varying(25) |
t9 | character varying(25) |
t10 | character varying(25) |
t11 | character varying(25) |
t12 | character varying(25) |
Run Code Online (Sandbox Code Playgroud)
Dmi*_*aev 13
WHERE field !~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$'
Run Code Online (Sandbox Code Playgroud)
从PostgreSQL 邮件列表上的这条消息中,您应该能够使用正则表达式。
例如,这样的事情应该使 t1 中的无效值无效:
UPDATE data.tempe SET t1=NULL
WHERE t1 !~ E'^[+-]?[0-9]+(\\\\.[0-9]*)?([Ee][+-]?[0-9]+)?\$';
Run Code Online (Sandbox Code Playgroud)
(正则表达式可能取决于您期望的数据格式。)
| 归档时间: |
|
| 查看次数: |
8938 次 |
| 最近记录: |