答えて
update table set col = null where col = 0
私は30以上のカラムを持っていれば何をすることができますか?私はすべてのカラム名を書いていますか? – Nuisance
@Nuisance 30の列をゼロに更新する必要がある場合は、ゼロの場合は、上のようなコードを記述する必要があります。それはなぜ使えないのですか? – NimChimpsky
UPDATE MYTABLE SET MYCOLUMN = NULL WHERE MYCOLUMN = 0
しかし、あなたはすべての列に意味ですか?それはもっとうまくいくでしょうし、それぞれの列に対して個別のステートメントを作成するだけです。また、スキーマを読んでストアドプロシージャとEXECでSQLを生成することも可能ですが、これは一回限りの仕事だと想像していますので、お勧めしません。
はい、私はすべての列を意味する.. !! – Marshal
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回限りのジョブの場合、次のステートメントから出力を取得して実行することができます。
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'
だからですか? NULL値を0に設定するか、0値をNULLに設定しますか? –
タイトルと本文は反対の質問です。 – Jamie