2016-06-30 7 views
0

私はいくつかの行にいくつかの無効な値を持っているいくつかの行を持つテーブルsome_tableを持っているNULLに変換する必要があります。SQL - 条件付きでNULLに列の値を設定します。

私は元のテーブルが1つのアクセス許可で許可されていない、またすべての列名に対して繰り返される必要があるため、以下を使用することはできません。

UPDATE some_table [email protected]@ SET column_name = NULL WHERE column_name = 'invalid value'; 

だから、NULLに変換し、無効な値を持つ新しいテーブルを作成するために「選択」操作にする必要がある - これを行うための簡単な方法はありますか?

NULLIF以下@Jonnyから答えを更新

は良いオプションです。しかし、それを各列ごとに別々に行う必要はなく、すべての列に適用する方法があります。時には列の数がかなり大きい場合もあります。

+0

男、あなたはすべての列に適用することはできません。ジョニーの答えは良いです、あなたはそれを1列1列で扱わなければなりません。 –

答えて

1

NULLIFを使用できます

9.16.3をご覧ください。 NULLIFのようなものについてはどのように https://www.postgresql.org/docs/current/static/functions-conditional.html

SELECT NULLIF('invalid value', column_name) 
FROM some_table 
+0

NULLIFは良いオプションです。しかし、各列ごとに別々に行う必要がなく、すべての列に適用する方法はありますか? – user3206440

+0

Postgresのマニュアルの古いバージョンにはリンクしないでください。現在のバージョンのマニュアルには '/ docs/current /'を使用してください。 –

0

INSERT INTO some_table2 (column_name, ...) SELECT * FROM some_table WHERE column_name <> 'invalid value'; 
INSERT INTO some_table2 (column_name, ...) SELECT null, ... FROM some_table WHERE column_name = 'invalid_value'; 
関連する問題