4

気象観測から集めたデータを含む表があります。データベースに挿入されたときに間違いであるように準備が整っていないデータ。最近の閲覧で、数値ではないはずのデータが見つかりました。

数値以外の値が存在する行を選択するにはどうすればよいですか?

テーブルのレイアウトは次のとおりです。

#\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) |  
4

2 に答える 2

9
WHERE field !~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$'
于 2016-09-16T05:38:16.970 に答える
5

PostgreSQLメーリングリストのこのメッセージから、正規表現を使用できるはずです。

たとえば、このようなものはt1の無効な値を無効にする必要があります。

UPDATE data.tempe SET t1=NULL
    WHERE t1 !~ E'^[+-]?[0-9]+(\\\\.[0-9]*)?([Ee][+-]?[0-9]+)?\$';

(正規表現は、必要なデータ形式によって異なる場合があります。)

于 2012-07-18T22:50:45.093 に答える