2010-11-22 25 views
4

SQLテーブルですべての0の値をNULLに設定するにはどうすればよいですか?すべての0の値をNULLに設定する

ありがとうございます。

+3

だからですか? NULL値を0に設定するか、0値をNULLに設定しますか? –

+3

タイトルと本文は反対の質問です。 – Jamie

答えて

13
update table set col = null where col = 0 
+0

私は30以上のカラムを持っていれば何をすることができますか?私はすべてのカラム名を書いていますか? – Nuisance

+1

@Nuisance 30の列をゼロに更新する必要がある場合は、ゼロの場合は、上のようなコードを記述する必要があります。それはなぜ使えないのですか? – NimChimpsky

3
UPDATE MYTABLE SET MYCOLUMN = NULL WHERE MYCOLUMN = 0 

しかし、あなたはすべての列に意味ですか?それはもっとうまくいくでしょうし、それぞれの列に対して個別のステートメントを作成するだけです。また、スキーマを読んでストアドプロシージャとEXECでSQLを生成することも可能ですが、これは一回限りの仕事だと想像していますので、お勧めしません。

+0

はい、私はすべての列を意味する.. !! – Marshal

2
UPDATE MyTable 
SET Col1 = NULLIF(Col1, 0), 
    Col2 = NULLIF(Col2, 0), 
    Col3 = NULLIF(Col3, 0) 
WHERE (Col1 = 0 
    OR Col2 = 0 
    OR Col3 = 0) 
1

1回限りのジョブの場合、次のステートメントから出力を取得して実行することができます。

SELECT 'UPDATE ' 
     + OBJECT_NAME(OBJECT_ID) 
     + ' SET ' 
     + sc.name 
     + ' = NULL WHERE ' 
     + sc.name 
     + ' = 0'   
FROM sys.columns sc 
     INNER JOIN sys.types st ON st.system_type_id = sc.system_type_id 
WHERE st.name IN ('bigint', 'int', 'smallint')   
     AND OBJECT_NAME(OBJECT_ID) = 'YourTable'