我有一张表格,其中包含从气象观测中收集的数据。准备不充分的数据,因此在插入数据库时会出错。在最近的浏览中,我发现了非数字数据,它们不应该是任何数据。
如何选择存在非数值的行?
表格的布局如下:
#\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) |
答案 0 :(得分:4)
从this message on the PostgreSQL mailing list开始,您应该可以使用正则表达式。
例如,类似这样的东西应该使t1中的无效值无效:
UPDATE data.tempe SET t1=NULL
WHERE t1 !~ E'^[+-]?[0-9]+(\\\\.[0-9]*)?([Ee][+-]?[0-9]+)?\$';
(正则表达式可能取决于您期望的数据格式。)
答案 1 :(得分:1)
WHERE field !~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$'