テーブル全体で true という単語のすべてのインスタンスを見つけて、それらを「1」に変更しようとしています。将来的に時間を節約するために、すべての列を一度に変更して、1 つのクエリのみを実行できるようにしたいと考えています。
update myTable
set field1, field2, field3=1
where field1, field2, field3='true'
それはちょっと私がやっていることです。
テーブル全体で true という単語のすべてのインスタンスを見つけて、それらを「1」に変更しようとしています。将来的に時間を節約するために、すべての列を一度に変更して、1 つのクエリのみを実行できるようにしたいと考えています。
update myTable
set field1, field2, field3=1
where field1, field2, field3='true'
それはちょっと私がやっていることです。
update mytable
set
field1 = case when field1='true' then 1 else field1 end,
field2 = case when field2='true' then 1 else field2 end,
field3 = case when field3='true' then 1 else field3 end
where
field1 ='true' or field2='true' or field3='true'
現在の構文は近いです。各フィールドの値を指定する必要があります。
UPDATE MyTable
SET
Field1 = CASE WHEN Field1 = 'True' THEN 1 ELSE Field1 END,
Field2 = CASE WHEN Field2 = 'True' THEN 1 ELSE Field2 END,
Field3 = CASE WHEN Field3 = 'True' THEN 1 ELSE Field3 END
これにより、すべての行がチェックされ、必要に応じてそれらのフィールドが更新されます。
いいえ、あなたが書いたようにこれを行う簡単な方法はありません。
できることは、次を使用して列を動的にループすることです。
select name from sys.columns
where object_id=(
select object_id from sys.objects where name like 'myTable '
)
そして一つ一つ確認。
いくつかのコーディングが必要で、実行時間は最適ではありませんが、多くのコードを記述する必要がなくなり、主な利点は、名前を変更するだけでテーブルを変更できることです。