2016-06-30 24 views
0

我有一個表 - some_table它有一些列,其中一些行中有一些無效值需要轉換成NULLSQL - 有條件地設置列值爲NULL

我不能使用下面的內容,因爲原始表不允許被一個權限所允許,而且還需要對所有列名重複。

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

所以它必須是「選擇」操作,以創建具有無效值的新錶轉換爲NULL - 有一個快速的方法來做到這一點?

從@Jonny下面

NULLIF答案更新是一個不錯的選擇。然而,是否有辦法將它應用於所有列,而不必單獨爲每列執行 - 有時列的數量相當龐大。

+0

老兄,你不能把它應用到所有列。約翰尼的答案很好,你必須處理1列1列。 –

回答

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';