2016-06-30 15 views

答えて

0

各列のcase式を使用。あなたは、単に代わりに何のNULLをしたい場合は

select case when column1 = 'X' then 'Column1' else <whatever> end as column1, 
     case when column2 = 'X' then 'Column2' else <whatever> end as column2, 
... 
     case when column1340 = 'X' then 'Column1340' else <whatever> end as column1340 
from tablename 

、あなたはelse <whatever>部分をスキップすることができます。アップデート[SomeTable]を設定し、[COLUMN1] = 'column1の' [COLUMN1] = 'X';更新[SomeTable

+0

私はできるだけ多くの列を持っていますそれらのすべてをSQLリクエストに入力する必要はなく、あまり適応しないでしょう。 – shrimpdrake

+0

1340列の場合、問題が発生しています...動的SQLを使用するか、dbを再設計してください。 – jarlh

0

1300列の場合、私は動的SQL

Declare @SQL varchar(max) = '' 
Select @SQL = @SQL+coalesce(';Update ['+Table_Name+'] Set ['+Column_Name+']='''+Column_Name+''' where ['+Column_Name+']=''X''' ,'') 
    From (Select Table_Name,Column_Name From INFORMATION_SCHEMA.COLUMNS where Table_Name='SomeTable') A 
Print @SQL 
--Exec(@SQL) 

戻り

を行くだろう] [column2] = 'column2'を[column2] = 'X'に設定します; Update [SomeTable] [column3] = 'column3'を[column3] = 'X'に設定します

+0

しかし、私は非常に残念なことに私は動的SQLが可能かどうかわからないので、私は非常に残念なことにAccessでそれを行う必要があります。 – shrimpdrake

+0

申し訳ありませんが、私はSQL Serverの中心です。私がタグSQLを見たとき、私はただ仮定しました。 –

関連する問題