多数の列を持つ SQL テーブルがあります。何らかの理由で、一部の列に NULL セルではなく空のセルが含まれています。すべての列のすべての空のセルを NULL にしたいと思います。
単一の列に移動する方法は次のとおりです。
UPDATE your_table SET column = NULL WHERE column = ''
ただし、列名を1つずつ記述せずに、すべての列に対して同様のロジックを効率的に実行する方法がわかりません。
ありがとう、
多数の列を持つ SQL テーブルがあります。何らかの理由で、一部の列に NULL セルではなく空のセルが含まれています。すべての列のすべての空のセルを NULL にしたいと思います。
単一の列に移動する方法は次のとおりです。
UPDATE your_table SET column = NULL WHERE column = ''
ただし、列名を1つずつ記述せずに、すべての列に対して同様のロジックを効率的に実行する方法がわかりません。
ありがとう、
次のクエリを実行します。
SELECT 'UPDATE yourtable SET ' + name + ' = NULL WHERE ' + name + ' = '''';'
FROM syscolumns
WHERE id = object_id('yourtable')
AND isnullable = 1;
このクエリの出力は、次のような SQL スクリプトのチャンクになります。
UPDATE yourtable SET column1 = NULL WHERE column1 = '';
UPDATE yourtable SET column2 = NULL WHERE column2 = '';
UPDATE yourtable SET column3 = NULL WHERE column3 = '';
-- etc...
その SQL スクリプトをコピーして新しいクエリに貼り付け、それを実行してすべての列を更新します。
クエリを実行しsyscolumns
て列のリストを取得し、その結果を使用してクエリを作成できます。
select quotename(name) + ' = nullif (' + quotename(name)+ ','''')'
from syscolumns
where id = object_id('yourtable')
さらに、クエリを次のように書くと
update yourtable
set
yourcolumn=nullif(yourcolumn, ''),
yourcolumn2=nullif(yourcolumn2, ''),
...
その後、WHERE句なしで単一のクエリで実行できます